2016-10-24 10 views
-1

I'vは、このようなにApp_Codeフォルダ内CustomHelpers.cshtmlインサイド宣言型カミソリのHTMLヘルパーを作成しました。しかし、私はinputHtml.Helperと交換したとき:カスタムヘルパーはHTMLヘルパーを入力タイプで動作しなく

@Html.RadioButton(@groupName, @item.Value, false) <br /> 

それは私のヘルパーでHtml.RadioButtonにnull参照の例外を提供します。誰かがなぜ私に教えてくれますか? 私はこのようにそれを呼び出す:

@CustomHelpers.RadioButtonList("name", (System.Web.Mvc.SelectListItem[])ViewBag.Tags) 
+0

どのようにあなたのコードは、ヘルパーのですか? 'this'キーワードを使っても型を拡張しません。 – kayess

+0

@kayess何を意味していますか? –

+2

@kayess MVCの '@ helper'は、拡張メソッドと同じではありません。 https://weblogs.asp.net/scottgu/asp-net-mvc-3-and-the-helper-syntax-within-razorを参照してください。 –

答えて

0

私は私のヘルパーにWebViewPage pageを追加することによって、私の問題を解決しました:

@using System.Web.Mvc.Html 
@helper RadioButtonList(WebViewPage page, string groupName, IEnumerable<System.Web.Mvc.SelectListItem> items) 
{ 
    <div> 
    @foreach (var item in items) 
    {    
     @page.Html.RadioButton(@groupName, @item.Value, false) <br />    
    } 
    </div> 
} 

そして、私はそれを呼び出す:

@CustomHelpers.RadioButtonList(this,"name", (System.Web.Mvc.SelectListItem[])ViewBag.Tags) 
関連する問題