【问题标题】:How do I use UrlHelper from within a Razor helper?如何在 Razor 助手中使用 UrlHelper?
【发布时间】:2011-05-30 04:45:24
【问题描述】:

我正在尝试像这样创建一个 Razor 助手:

@helper Render(IEnumerable<MyItem> items) {
  <ul>
    @foreach (var item in items) {
      <li><a href="@Url.Content(item.Url)">Click</a></li>
    }
  </ul>
}

这里唯一的问题是 System.Web.WebPages.HelperPage(Razor 助手的基类)没有 Url 属性(UrlHelper 类型)。它确实有 Html(HtmlHelper 类型)但没有 Url。

在助手中获取 UrlHelper 的最干净的方法是什么?我应该内联新的吗?

【问题讨论】:

    标签: asp.net-mvc razor helper


    【解决方案1】:

    我尝试做同样的事情并找到了这篇文章。

    我通过使用@VirtualPathUtility.ToAbsolute("~/foo/bar.jpg") 而不是@Url.Content("~/foo/bar.jpg") 解决了我的问题

    由于@VirtualPathUtility.ToAbsolute() 是静态的,所以它随处可用。另外,我不必添加任何引用或任何内容,它在我的 Razor 视图中开箱即用。

    如果您需要使用@Url.Action@Url.RouteUrl,您可能希望找到一个真正的UrlHelper ...但对于@Url.Content(这也是我尝试使用的),@987654328 @ 效果很好!

    【讨论】:

      【解决方案2】:
          @helper Render(IEnumerable<MyItem> items,UrlHelper url) {
        <ul>
          @foreach (var item in items) {
            <li><a href="@url.Content(item.Url)">Click</a></li>
          }
        </ul>
      }
      

      【讨论】:

        【解决方案3】:

        Syntax for ASP.Net MVC Phil Haack's Repeater syntax using Razor (MVC 3)? - Stack Overflow

        @helper Render(IEnumerable<MyItem> items) {
          var url = new System.Web.Mvc.UrlHelper(Context.Request.RequestContext);
          <ul>
            @foreach (var item in items) {
              <li><a href="@url.Content(item.Url)">Click</a></li>
            }
          </ul>
        }
        

        或者,如果使用 MVC3 RC2

        @helper Render(IEnumerable<MyItem> items) {
          <ul>
            @foreach (var item in items) {
              <li><a href="@Href(item.Url)">Click</a></li>
            }
          </ul>
        }
        

        希望对您有所帮助。

        【讨论】:

        • 您链接到的答案不使用 UrlHelper...?
        猜你喜欢
        • 1970-01-01
        • 2019-11-07
        • 2021-03-08
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 2013-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多