3

レイアウト ページなどを含む標準の MVC3 プロジェクトがあります。きれいな URL を作成する必要があります。URL書き換えモジュールで遊んでみました。http://localhost/Photographer/Pabloに変換しようとしてhttp://localhost/category-about.aspx?displayName=Pabloいますが、これが私の書き換えルールです (非常に簡単です!):

  <system.webServer>
    <rewrite>
      <rules>
        <rule name="about" patternSyntax="Wildcard">
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="\.png|\.js|\.css|\.jpg" negate="true" />
          </conditions>
          <match url="photographer/*" />
          <action type="Rewrite" url="category-about.aspx?displayName={R:1}" logRewrittenUrl="true" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

問題を解決しようとしてグーグルで検索した後に追加したすべての条件 - しかし、それらは役に立ちませんでした。

このページを見つけました: http://www.iis.net/learn/extensions/url-rewrite-module/url-rewriting-for-aspnet-web-forms - 書き換え時に ~ 演算子がサーバーによって適切に処理されることを示していますルールが適用されます。しかし、それは明らかに私の場合には起こりません-添付の画像を参照してください:

画像添付

私の問題の解決策は何ですか? CSS/JS ファイルはどのように参照すればよいですか? IIS 7.5 で MVC3 を使用しています。

更新: 画像はあまり明確ではありませんが、MasterLayout ページに

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

しかし、それは次のように解決されます

http://localhost/Photographer/Content/Site.css - and it gives 404

それ以外の

http://localhost/Content/Site.css - which gives 200

この URL をリクエストすると: http://localhost/Photographer/Pablo. ロジックは正常に動作します - 私のコントローラはリクエストを取得してページをレンダリングします - しかし、それは CSS であり、画像がありません (間違ったルート フォルダが先頭に追加されているため)。

4

3 に答える 3

4

Request.ApplicationPath を使用してみてください。このようなものが動作するはずです:

<link href="@(Request.ApplicationPath + "Content/Site.css")" rel="stylesheet" type="text/css" />
于 2013-09-05T06:37:27.637 に答える
2

あなたは次のように言いました:

<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" />

として解決されます

「http://localhost/Photographer/Content/Site.css」

、これは絶対に正しいです。これが解決される方法です。css はどこにありますか? css 内の画像のパスは正しいですか?

于 2013-09-04T12:54:30.163 に答える
0

これよりも

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

チルダなしでこれを試してください (~)

<link href="@Url.Content("/Content/Site.css")" rel="stylesheet" type="text/css" />

これはあなたの希望に解決するはずですhttp://localhost/Content/Site.css

于 2013-09-05T17:42:46.727 に答える