2009-03-04 21 views
7

ACTUALIZACIÓN este problema no existe en los bits de liberación de ASP.NET MVCASP.NET MVC RC vuelve camino equivocado para Url.Content

Tengo una aplicación ASP.NET MVC RC, que funciona muy bien bajo la depurador ejecutándose desde http://localhost:9002/ Pero cuando lo publico en http://localhost/Zot/ las llamadas a Url.Content devuelven valores incorrectos.

Tengo etiquetas de script como

<script src="<%= Url.Content("~/Scripts/util.js") %>" ... 

En el sitio publicado esto produce:

<script src="Zot/Scripts/util.js" ... 

En lugar de

<script src="/Zot/Scripts/util.js" ... 

o

<script src="Scripts/util.js" ... 

que tienen etiquetas de hojas de estilo como:

<link href="~/Content/Site.css" runat="server" ... 

que producen lo correcto:

<link href="Content/Site.css" ... 

alguna sugerencia sobre qué Url.Content está fallando. Claramente no puedo poner un runat="server" en las etiquetas <script>.

Respuesta

6

que tienden a utilizar de Script Registration helper Rob Conery:

public static string RegisterJS(this System.Web.Mvc.HtmlHelper helper, string scriptLib) { 
    //get the directory where the scripts are 
    string scriptRoot = VirtualPathUtility.ToAbsolute("~/Scripts"); 
    string scriptFormat="<script src=\"{0}/{1}\" type=\"text/javascript\"></script>\r\n"; 
    return string.Format(scriptFormat,scriptRoot,scriptLib); 
} 

Uso:

<%= Html.RegisterJS("myscriptFile.js") %> 

Como se puede ver en el ejemplo, este utiliza VirtualPathUtility para resolver la dirección URL del directorio de secuencias de comandos. Esto también debería ayudar a eludir el problema de la sopa de etiquetas.

+0

Gracias! Eso funcionó muy bien. –

+0

Rob, por favor, también tenga en cuenta la respuesta de Levi, ya que aparentemente este fue un error que fue corregido en RC2. Saludos. –

Cuestiones relacionadas