我正在将ASP.NET MVC应用程序部署到IIS 6,但遇到了根路径问题。
在Global.asax中,我有根路径映射:
routes.MapRoute("Root", "",
new { controller = "Dashboard", action = "Index", id = "" });
当我导航到http://servername:70/test2/时,应用会显示正确的页面,但样式表和JavaScript文件未加载。查看源代码,路径显示如下:
<script src="test2/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css"
href="test2/Content/stylesheets/app.css" />
这使浏览器寻找
http://servername:70/test2/test2/Content/stylesheets/app.css
当我直接进入控制器(http://servername:70/test2/Dashboard.aspx)时,路径是正确的:
<link rel="stylesheet" type="text/css" href="Content/stylesheets/app.css" />
使用ActionLink生成的任何链接也会发生这种情况。使用Url.Content:
生成样式表和脚本路径<link rel="stylesheet" type="text/css"
href="<%= Url.Content("~/Content/stylesheets/app.css") %>" />
答案 0 :(得分:0)
我最近回答了类似于此的question,它使用了Rob Conery的Script Registration Helper。我将在这里为您复制答案,并为样式表添加示例HtmlHelper。
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);
}
public static string RegisterCSS(this System.Web.Mvc.HtmlHelper helper, string styleLink, string rel) {
//get the directory where the css is
string stylesheetRoot = VirtualPathUtility.ToAbsolute("~/Content/Stylesheets");
string styleFormat="<link type='text/css' href='{0}/{1}' rel='{1}' />\r\n";
return string.Format(styleFormat, stylesheetRoot, styleLink, rel);
}
用法:
<%= Html.RegisterJS("myscriptFile.js") %>
<%= Html.RegisterCSS("app.css") %>
希望这有帮助。
,我注意到Levi对该问题有另一个回复:
这应该在RC2中修复。如果您使用RC2但仍然遇到此问题,请在http://forums.asp.net/1146.aspx提交错误。
如果这是您的首选答案,请提升Levi's response。
答案 1 :(得分:0)
或者,使用Url.Content ...
<link href="<%=Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css" />