2009-03-04 13 views
7

UPDATEの間違ったパスを返しますASP.NET MVC RCは、この問題は、ASP.NET MVCのリリースビットに存在していないUrl.Content

私は下の罰金に実行ASP.NET MVC RCアプリを持っていますデバッガを実行中http://localhost:9002/しかし、http://localhost/Zot/に公開すると、Url.Contentへの呼び出しが間違った値を返しています。代わりに

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

または

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

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

私は、これは生産公開されたサイトで

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

のようなスクリプトタグを持っています正しいことを生産

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

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

なぜUrl.Contentが失敗している上の任意の提案

私は、スタイルシートのようなタグを持っています。私は明確にrunat="server"<script>タグに置くことはできません。

答えて

6

私はロブ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); 
} 

使用法:

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

をあなたが例で見ることができるように、これはScriptsディレクトリのURLを解決するためにVirtualPathUtilityを使用しています。これはまた、タグスープの問題を回避するのに役立つはずです。

+0

ありがとうございます!それは素晴らしい仕事でした。 –

+0

Rob、Leviのレスポンスにも注意してください。これは明らかにRC2で修正されたバグでした。 乾杯。 –

2

これはRC2で修正されているはずです。 RC2を使用していてもこの問題が発生している場合は、http://forums.asp.net/1146.aspxにバグを報告してください。