母版页中的路径

时间:2008-09-15 16:43:45

标签: asp.net-mvc master-pages

我已经开始使用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路径也被全局化?

4 个答案:

答案 0 :(得分:3)

<script src="<%= ResolveClientUrl("~/Content/menu.js") %>" type="text/javascript"></script>

答案 1 :(得分:1)

制作扩展方法。这是一种方法:

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>

答案 2 :(得分:0)

请改用:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />

答案 3 :(得分:0)

或者您可以在页面的HEAD部分使用BASE标记。您所有链接都是相对于在“base”标签中输入的位置,您不必使用“../../”和“〜”的东西。除了CSS文件(后台URL等)中的链接,其中链接相对于css文件的位置。