简体   繁体   中英

ASP.NET MVC RC returns wrong path for Url.Content

UPDATE this issue does not exist in the release bits of ASP.NET MVC

I have an ASP.NET MVC RC app which runs fine under the debugger running from http://localhost:9002/ But when I publish it to http://localhost/Zot/ the calls to Url.Content are returning incorrect values.

I have script tags like

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

In the published site this produces:

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

Instead of

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

or

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

I have stylesheet tags like:

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

That produce the right thing:

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

Any suggestions on why Url.Content is failing. I clearly can't put a runat="server" on the <script> tags.

I tend to use Rob Conery's 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);
}

Usage:

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

As you can see in the example, this uses VirtualPathUtility to resolve the url of the Scripts directory. This should also help to bypass the problem of tag soup.

This should have been fixed in RC2. If you are using RC2 and are still seeing this problem, please file a bug athttp://forums.asp.net/1146.aspx .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM