寻找此HtmlHelper <TModel> htmlHelper的HtmlExtensions

问题描述

|| 我已经尝试向我的mvc项目中添加一些htmlextensions。当我尝试使用它们时,他们都期待这个HtmlHelper htmlHelper参数?但是根据所有示例,这些都不是预期的..我在做什么错? 公共静态字符串RadioButtonListFor(this HtmlHelper htmlHelper,Expression> expression,String tagBase)其中TModel:class         {             返回htmlHelper.RadioButtonListFor(expression,tagBase,null);         }
    public static string RadioButtonListFor<TModel>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel,RadioButtonListviewmodel>> expression,String tagBase,object htmlAttributes) where TModel : class
    {
        return htmlHelper.RadioButtonListFor(expression,tagBase,new RouteValueDictionary(htmlAttributes));
    }

    public static string RadioButtonListFor<TModel>(this HtmlHelper<TModel> htmlHelper,IDictionary<string,object> htmlAttributes) where TModel : class
    {
        var inputName = tagBase;
        RadioButtonListviewmodel radioButtonList = GetValue(htmlHelper,expression);

        if (radioButtonList == null)
            return String.Empty;

        if (radioButtonList.ListItems == null)
            return String.Empty;


        var containerTag = new TagBuilder(\"td\");
        containerTag.MergeAttribute(\"id\",inputName + \"_Container\");
        foreach (var item in radioButtonList.ListItems)
        {
            var radioButtonTag = RadioButton(htmlHelper,inputName,new SelectListItem { Text = item.Text,Selected = item.Selected,Value = item.Value.ToString() },htmlAttributes);

            containerTag.InnerHtml += radioButtonTag;
        }

        return containerTag.ToString();
    }
    

解决方法

        您正在为HtmlHelper类编写扩展方法。每当您要使用扩展方法时,都必须导入扩展方法所在的名称空间。 假设
RadioButtonListFor
MyNamespace
namespace MyNamespace
{
    public static class HtmlExtensions
    {
        public static string RadioButtonListFor<TModel>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel,RadioButtonListViewModel>> expression,String tagBase,object htmlAttributes) where TModel : class
        {
             return htmlHelper.RadioButtonListFor(expression,tagBase,new RouteValueDictionary(htmlAttributes));
        }
    }
}
现在,在您看来,您必须导入ѭ2才能使用此扩展方法。 您可以通过在页面顶部这样指定来在Razor中导入名称空间。
@using MyNamespace
    ,        我写了一篇文章,内容涉及为HtmlHelper.DropDownList帮助器创建扩展方法。检查一下...可能有帮助。我将介绍
DropDownList
DropDownListFor
方法,并继续在Razor视图文件和ѭ8including中包括对扩展方法类的名称空间的引用。 从ASP.NET MVC 3应用程序的视图模型中的数据填充html选择列表