【问题标题】:Getting the current URL within the View layer in ASP.net MVC在 ASP.net MVC 的视图层中获取当前 URL
【发布时间】:2013-01-29 19:50:01
【问题描述】:

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

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

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

<%= Request.Url.PathAndQuery %>

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

var request = HttpContext.Current.Request

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

【问题讨论】:

    标签: c# asp.net-mvc web-applications


    【解决方案1】:

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

    ViewContext.HttpContext.Request.Path
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 非常感谢,这正是我想要的! (编辑:哎呀,你给我看了 CSS 部分)
      猜你喜欢
      • 2012-04-21
      • 2011-05-25
      • 2010-11-02
      • 2010-09-14
      • 2011-09-12
      • 2017-12-11
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多