自定义帮助程序适用于输入类型,但不适用于Html帮助程序

时间:2016-10-24 10:15:48

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

我在 App_Code 文件夹里面的CustomHelpers.cshtml里面创建了一个声明性的Razor html助手:

\s(\d+\/\d+)+

这很好用。但是当我用@helper RadioButtonList(string groupName, IEnumerable<System.Web.Mvc.SelectListItem> items) { <div> @foreach (var item in items) { <input type="radio" name="@groupName" value="@item.Value" @if (item.Selected) { <text>checked="checked"</text> } /> <br/> } </div> } 替换input时:

Html.Helper

它在帮助器中的@Html.RadioButton(@groupName, @item.Value, false) <br /> 上给出了一个空引用异常。有人可以告诉我为什么吗? 我称之为:

Html.RadioButton

1 个答案:

答案 0 :(得分: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)