Reputation: 47502
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.
Upvotes: 7
Views: 9631
Reputation: 32828
This should have been fixed in RC2. If you are using RC2 and are still seeing this problem, please file a bug at http://forums.asp.net/1146.aspx.
Upvotes: 2
Reputation: 11728
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.
Upvotes: 7