2009-03-04 10 views
7
Url.Content

MISE À JOUR cette question n'existe pas dans les bits de libération de ASP.NET MVCASP.NET MVC RC retourne le mauvais chemin pour

J'ai une application ASP.NET MVC RC qui fonctionne bien sous la Débogueur s'exécutant à partir de http://localhost:9002/ Mais lorsque je le publie à http://localhost/Zot/ les appels à Url.Content retournent des valeurs incorrectes.

Je balises de script comme

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

Dans le site publié ce produit:

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

Au lieu de

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

ou

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

J'ai des balises stylesheet comme:

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

qui produisent la bonne chose:

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

Toutes les suggestions sur les raisons Url.Content échoue. Je ne peux clairement pas mettre un runat="server" sur les étiquettes <script>.

Répondre

6

J'ai tendance à utiliser Rob Conery Script Registration helper:

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); 
} 

Utilisation:

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

Comme vous pouvez le voir dans l'exemple, il utilise VirtualPathUtility pour résoudre l'URL du répertoire Scripts. Cela devrait également aider à contourner le problème de tag soupe.

+0

Merci! Cela a bien fonctionné. –

+0

Rob, s'il vous plaît noter également la réponse de Levi, comme apparemment c'était un bug qui a été corrigé dans RC2. Cheers. –

Questions connexes