检查asp.net MVC生成的url是否相等

时间:2017-10-27 07:19:26

标签: asp.net-mvc asp.net-routing

@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。 例如,home / index在请求时匹配,

  1. / - 从默认值派生的控制器和操作。
  2. 家/索引
  3. 我尝试使用Url.Action()来检查相等性。但是检查的成功或失败取决于所要求的网址。即,在请求“\”(app root)时,请将evaluate评估为true。请求“home \ index”时,检查评估为false。 Url.Action()评估为“\”。

    是否有一种更可靠的方法来检查当前视图网址与一些默认路由的mvc网址?

1 个答案:

答案 0 :(得分:1)

您应该直接检查路由数据而不是网址,特别是&#34;控制器&#34;和&#34;行动&#34;值。

您可以使用ViewContext.RouteData.Values["controller"]ViewContext.RouteData.Values["action"]。然后,您可以确保控制器是&#34; Home&#34;并且行动是&#34;索引&#34;。