获取 MVC 中视图层 ASP.net 当前 URL

本文关键字:net 当前 URL ASP 图层 MVC 视图 获取 | 更新日期: 2023-09-27 17:56:37

我在这里和其他网站上读过一些以前的问题,但是作为 ASP.net 和MVC的新手,我在理解所提供的信息时遇到了一些麻烦。

我希望/需要/被告知通过视图层获取我所在页面的当前 URL,并使用该信息将 id 应用于允许特定 css 的 li 标签。我们已将左侧导航栏从嵌入到每个页面(由以前的合作社完成)移动到将列表放在我将在所有必需页面上调用的部分视图中。网站的样式要求在用户当前所在页面的左侧导航标记上具有特定的突出显示。

我读过的一些例子包括使用:

<%= Request.Url.PathAndQuery %>
Request.Url.ToString() or Request.Url.AbsoluteUri
var request = HttpContext.Current.Request

但我知道并非所有这些都可以在视图层中使用。最好的方法是什么?有没有我还没有找到的教程,任何人都可以推荐?

获取 MVC 中视图层 ASP.net 当前 URL

在我看来,为此使用 URL 可能不是最好的主意。

相反,实现此目的的一种快速简便的方法是使用包含控制器值和当前请求操作值的ViewContext.RouteData。可以从视图层轻松访问它。

ViewContext.RouteData.Values["Controller"].ToString()
ViewContext.RouteData.Values["Action"].ToString()

所以在你看来,你可以做类似的事情

<ul class="nav">
    <li class="@(ViewContext.RouteData.Values["Controller"].ToString() == "ControllerName" ? "active" : "")"><a href="#">Foo</a></li>
</ul>

你可以进一步推动它,让它更漂亮,但你得到了基本的想法。

我一直在为 asp.net 3.0 寻找解决方案,并找到了以下内容来直接访问 URL 路径(您当前正在加载/显示的页面):

ViewContext.HttpContext.Request.Path

我在 if 语句中使用它来动态决定不同的视图导入,效果很好。