2017-10-27 8 views
1
@if (Url.Action() == Url.Action("index", "home")) { 
<text> 
    //some js code conditionally rendered. 
    alert('test'); //Only should output, if current urls is home/index 
</text> 
} 

私はこの問題に直面します。既定のルートの場合、特定のビューに対して複数のURLが存在します。デフォルト由来するコントローラとアクション - は、例えば、ホーム/インデックスは、要求、asp.net MVC生成URLの等価性を確認

  1. /照合します。
  2. ホーム/インデックス

私は平等をチェックするUrl.Action()を使用してみました。しかし、チェックの成功または失敗はリクエストされたURLに依存します。つまり、 "\"(アプリのルート)を要求する場合は、evaluateをtrueにチェックします。 "home \ index"を要求すると、checkはfalseと評価されます。 Url.Action()は "\"と評価されます。

デフォルト経路でいくつかのmvc urlで現在のビューURLを確認する信頼性の高い方法はありますか?

+0

[リクエストのURLがルートテーブルにあるかどうかをテストする](https://stackoverflow.com/a/372​​15782/181087)を参照してください。同等のURLをテストすることは信頼できません。代わりに、URLを生成するルートビジネスロジックを実行するか、着信ルートをテストして、ヌル以外の応答があるかどうかを確認する必要があります。 – NightOwl888

答えて

1

urlの代わりにルートデータ、特に "controller"と "action"の値を直接確認する必要があります。

ViewContext.RouteData.Values["controller"]ViewContext.RouteData.Values["action"]を使用しています。次に、コントローラが「ホーム」で、アクションが「インデックス」であることを確認できます。

関連する問題