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

Checking equality of asp.net MVC generated urls

@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. home/index

我尝试使用 Url.Action() 来检查相等性。但检查的成功或失败取决于请求的url。即当请求“\”(应用程序根目录)时,检查评估是否为真。请求 "home\index" 时,检查结果为 false。 Url.Action() 的计算结果为“\”。

是否有更可靠的方法来检查当前视图 url 使用一些 mvc url 和默认路由?

您应该直接检查路线数据而不是 url,尤其是 "controller" 和 "action" 值。

您可以使用 ViewContext.RouteData.Values["controller"]ViewContext.RouteData.Values["action"]。然后,您可以确保控制器是 "Home" 并且操作是 "Index".