5

ASP.NET MVC 4 アプリケーションのRouteConfigファイルに、次の既定のルートを登録しました。

routes.MapRoute("Default", "{controller}/{action}/{id}",
    new { controller = "home", action = "index", id = UrlParameter.Optional });

ここで、Razor ビューで、アプリケーションのルートへの URL を次のように生成したいと考えています。

<a href="@Url.Action("index", "home")">Home</a>

生成された URL には末尾のスラッシュが含まれます。したがって、リンクをクリックすると、ページlocalhost/IISApplicationName / が開きます。ただし、URL がlocalhost/IISApplicationNameになるように、URL に末尾のスラッシュを含めないようにします。/Account/Loginなどの他のアクションのルートを生成しても、末尾にスラッシュが付いた URL は作成されません。これは、アプリケーションのルートにリンクするルートに関するものです。

ASP.NET MVC ルーティングが上記のルートに末尾のスラッシュを追加しないようにする方法はありますか?

(スラッシュを含む URL からスラッシュを含まない URL にリダイレクトできることはわかっていますが、最初に正しいルート URL を生成するルーティングを使用したいと考えています。)

4

2 に答える 2

1

URL Rwrite Outbounds ルールをお勧めします。

URL 書き換えモジュールの送信規則の作成 : URL 書き換えモジュール 2 : URL 書き換えモジュール : The Official Microsoft IIS Site

サンプル構成:

    <rewrite>
        <outboundRules>
            <rule name="RewriteSlash">
                <match filterByTags="A" pattern="^/IISApplicationName/$" />
                <action type="Rewrite" value="/IISApplicationName" />
            </rule>
        </outboundRules>
    </rewrite>
于 2012-07-04T13:27:39.640 に答える
0

ASP.NET MVC ルーティングが上記のルートに末尾のスラッシュを追加しないようにする方法はありますか?

相対パスが空の場合は、末尾にスラッシュを渡す必要があります。何らかの方法で href を使用してリンクを生成してlocalhost/IISApplicationNameも、ブラウザーは最後に「/」を追加します (これは firebug で簡単に確認できます。ブラウザーのアドレス バーにhttp://stackoverflow.comと入力し、リクエスト タブを確認してください。末尾の "/")。

これは、HTTP/1.1 に従って、

絶対パスを空にすることはできません。元の URI に何も存在しない場合は、"/" (サーバー ルート) として指定する必要があります。

http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGcaRbqU (セクション 5.1.2)

于 2012-07-04T11:11:54.833 に答える