0

我试图在我的 mvc 项目中添加一些 htmlextensions。当我尝试使用它们时,他们都期待这个 HtmlHelper htmlHelper 参数?但根据所有示例,这些都不是预期的..我做错了什么?

公共静态字符串 RadioButtonListFor(this HtmlHelper htmlHelper, Expression> expression, String tagBase) where TModel : class { return 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, Expression<Func<TModel, RadioButtonListViewModel>> expression, String tagBase, 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();
    }
4

2 回答 2

0

您正在为HtmlHelper类编写扩展方法。当你想使用你的扩展方法时,你必须导入扩展方法所在的命名空间。

比如说RadioButtonListForMyNamespace

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));
        }
    }
}

现在在您看来,您必须导入MyNamespace才能使用此扩展方法。您可以通过在页面顶部这样指定命名空间来在 Razor 中导入命名空间。

@using MyNamespace
于 2011-06-23T23:20:56.380 回答
0

我写了一篇文章,介绍了为 HtmlHelper.DropDownList 助手创建扩展方法。看看吧。。可能会有帮助。我介绍了DropDownListandDropDownListFor方法,并在 Razor 视图文件和web.config.

从 ASP.NET MVC 3 应用程序的视图模型中的数据填充 html 选择列表

于 2011-06-23T23:33:10.080 回答