C# 在ASP.net MVC中获取视图层中的当前URL

C# 在ASP.net MVC中获取视图层中的当前URL,c#,asp.net-mvc,web-applications,C#,Asp.net Mvc,Web Applications,我已经在这里和其他网站上读过一些以前的问题,但是由于不熟悉ASP.net和MVC,我在理解所提供的信息时遇到了一些困难 我希望/需要/被告知通过视图层获取我所在页面的当前URL,并使用该信息将id应用于允许特定css的li标记。我们已经将左侧导航栏从嵌入每个页面(由以前的合作伙伴完成)移动到将列表放在部分视图中,我将调用所有需要的页面。网站的样式要求在左侧导航栏上有一个特定的突出显示,即用户当前所在页面的标签 我读过的一些示例包括: <%= Request.Url.PathAndQuery

我已经在这里和其他网站上读过一些以前的问题,但是由于不熟悉ASP.net和MVC,我在理解所提供的信息时遇到了一些困难

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

我读过的一些示例包括:

<%= Request.Url.PathAndQuery %>

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

var request = HttpContext.Current.Request

Request.Url.ToString()或Request.Url.AbsoluteUri
var request=HttpContext.Current.request

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

在我看来,使用这个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路径(您当前正在加载/显示的页面):


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

非常感谢,这正是我想要的!(编辑:哇,你给我看了CSS部分)
ViewContext.HttpContext.Request.Path