获取ASP.net MVC中View层中的当前URL

Mac*_*lty 2 c# asp.net-mvc web-applications

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

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

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

<%= Request.Url.PathAndQuery %>

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

var request = HttpContext.Current.Request
Run Code Online (Sandbox Code Playgroud)

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

dom*_*dom 7

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

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

ViewContext.RouteData.Values["Controller"].ToString()
ViewContext.RouteData.Values["Action"].ToString()
Run Code Online (Sandbox Code Playgroud)

因此,在您看来,您可以做类似的事情

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

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


小智 6

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

ViewContext.HttpContext.Request.Path
Run Code Online (Sandbox Code Playgroud)

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