检查 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 匹配请求时,
- / - 源自默认值的控制器和操作。
- 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".
@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 匹配请求时,
- / - 源自默认值的控制器和操作。
- 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".