2

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

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

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

<%= Request.Url.PathAndQuery %>

Request.Url.ToString() or Request.Url.AbsoluteUri

var request = HttpContext.Current.Request

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

4

2 回答 2

10

在我看来,使用 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>

您可以进一步推动它以使其更漂亮,但您了解基本概念。

于 2013-01-29T20:00:06.483 回答
3

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

ViewContext.HttpContext.Request.Path

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

于 2020-01-19T14:44:05.943 回答