web-dev-qa-db-ja.com

Razorヘルパー内からUrlHelperを使用するにはどうすればよいですか?

私は次のような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ヘルパーの基本クラス)に(タイプUrlHelperの)Urlプロパティがないことです。 Html(タイプHtmlHelper)はありますが、URLはありません。

ヘルパー内のUrlHelperに到達するための最もクリーンな方法は何ですか?インラインで新しいものを更新する必要がありますか?

23
Mike

ASP.Net MVC Phil HaackのRazor(MVC 3)を使用したリピーター構文の構文?-スタックオーバーフロー

@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>
}

または、MVC3RC2を使用している場合

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

この助けを願っています。

30
takepara
    @helper Render(IEnumerable<MyItem> items,UrlHelper url) {
  <ul>
    @foreach (var item in items) {
      <li><a href="@url.Content(item.Url)">Click</a></li>
    }
  </ul>
}
0
Refky Wahib