1

これは IIS の初心者の質問かもしれませんが、私のアプリケーションは css ファイルの読み込みに問題があります。

iisstart2.htm という名前のテスト ページを作成し、3 つのリンクを使用して参照を取得する場所を確認しました。

<link type='text/css' rel='stylesheet' href='~/site1.css' />
<link type='text/css' rel='stylesheet' href='/site2.css' />
<link type='text/css' rel='stylesheet' href='site3.css' />

2 つのコピーを作成し、ここに配置します。

  • C:\inetpub\wwwroot
  • C:\inetpub\wwwroot\ParentLevel

[サイトの編集] 設定で、物理パスを次のように設定しています。C:\inetpub\wwwroot\ParentLevel

最初のもの ( http://localhost/iisstart2.htm) を参照すると、css ファイルが検索される場所は次のとおりです。

ここに画像の説明を入力

ネストされたもの ( http://localhost/ParentLevel/iisstart2.htm) を参照すると、ここに表示されます

ここに画像の説明を入力

リンクが で始まる場合、/それはルートにまでさかのぼりますが、私が想像していたはずのことは、site2.css を探すことです。http://localhost/ParentLevel/site2.css

質問

デフォルトのルート ディレクトリはどこで変更できますか?

4

1 に答える 1

1

必要なものは~「アプリケーション ルート オペレーター」です。ただし、サーバー コントロールでのみ使用できます。追加するだけでうまくいくrunat="server"かもしれません:

<link runat="server" type='text/css' rel='stylesheet' href='~/site1.css' />

編集:どうやら上記はlinkまたはscriptタグでは機能しないようです-理由はわかりません。MapPathただし、同等の を使用できます。

<link type='text/css' rel='stylesheet' 
    href='<%= HttpContext.Current.Server.MapPath("~/site1.css") %>' />

または、ヘルパー メソッドを使用することもできます。これには、すべての参照を簡単にシフトできるという利点があります。何かのようなもの:

<link type='text/css' rel='stylesheet' href='<%= Application.GetCssPath("site1.css") %>' /> 

どこ

public namespace GlobalUtil
{
    public class Application
    {
        public static string GetCssPath(string relPath)
        { 
            return System.Web.Configuration.ConfigurationManager.AppSettings["CssPath"] + relPath;
        }
    }
}

このために、GlobalUtil名前空間を に登録することも必要ですweb.configCssPath再コンパイルなしの変更の設定とともに:

<appSettings>
  <add key="CssPath" value="/ParentLevel/" />
<appSettings>

<system.web>

                       

于 2013-07-25T20:51:14.757 に答える