2

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

4 に答える 4

3
<script src="<%= ResolveClientUrl("~/Content/menu.js") %>" type="text/javascript"></script>
于 2008-10-03T22:33:25.040 に答える
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;
}

次に、次のようにスクリプトrefを記述できます。

<script type="text/javascript" src="<%= Html.ResolveUrl("~/Content/menu.js")%>"></script>
于 2008-09-15T20:04:02.180 に答える
0

または、ページの HEAD セクションで BASE タグを使用できます。リンクはすべて、「base」タグに入力された場所に関連しており、「../../」や「~」などを使用する必要はありません。リンクがcssファイルの場所に関連しているCSSファイル(背景URLなど)のリンクを除きます。

于 2008-09-15T20:30:42.490 に答える
0

代わりにこれを使用してください:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
于 2008-09-15T16:46:14.743 に答える