母版页中的路径
时间:2020-03-05 18:53:55 来源:igfitidea点击:
我已经开始对ASP.net mvc网站的母版页进行一些工作,并且遇到了一个问题。当我在母版页上链接样式表时,似乎可以正确更新工作表的路径。那是我有的代码
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
但一旦页面被馈送到浏览器,我就会查看源代码
<link href="Content/Site.css" rel="stylesheet" type="text/css" />
这是完美的。但是,相同的路径转换似乎不适用于脚本文件。
<script src="../../Content/menu.js" type="text/javascript"></script>
就是一样的东西它似乎仍然可以在顶层页面上运行,但是我怀疑只是浏览器/ Web服务器可以纠正我的错误。有没有办法使src路径也被遍历?
解决方案
回答
改用这个:
<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
回答
制定一个扩展方法。这是一个方法:
public static string ResolveUrl(this HtmlHelper helper, string virtualUrl) { HttpContextBase ctx = helper.ViewContext.HttpContext; string result = virtualUrl; if (virtualUrl.StartsWith("~/")) { virtualUrl = virtualUrl.Remove(0, 2); //get the site root string siteRoot = ctx.Request.ApplicationPath; if (!siteRoot.EndsWith("/")) siteRoot += "/"; result = siteRoot + virtualUrl; } return result; }
然后,我们可以像这样编写脚本引用:
<script type="text/javascript" src="<%= Html.ResolveUrl("~/Content/menu.js")%>"></script>
回答
或者我们可以在页面的HEAD部分中使用BASE标签。然后,所有链接都是相对于在"基本"标记中输入的位置而言的,我们不必使用" ../../"和"〜"东西。 CSS文件中的链接(背景url等)除外,其中链接是相对于CSS文件的位置而言的。
回答
<script src="<%= ResolveClientUrl("~/Content/menu.js") %>" type="text/javascript"></script>