HtmlExtensions ищет этот HtmlHelper <TModel>htmlHelper - PullRequest
0 голосов
/ 24 июня 2011

Я пытался добавить htmlextensions в мой проект MVC.Когда я пытаюсь использовать их, они все ожидают этот параметр HtmlHelper htmlHelper?но по всем примерам это не ожидается .. что я делаю не так?

открытая статическая строка RadioButtonListFor (this HtmlHelper htmlHelper, Expression> expression, String tagBase) где 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();
    }

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Я написал пост, в котором описано создание методов расширения для помощника HtmlHelper.DropDownList. Проверьте это ... это может помочь. Я рассмотрю методы DropDownList и DropDownListFor и перейду к включению ссылки на пространство имен для вашего класса метода расширения как в файле представления Razor, так и в web.config.

Заполнение html-списков выбора из данных в модели представления в приложении ASP.NET MVC 3

0 голосов
/ 24 июня 2011

Вы пишете методы расширения для 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));
        }
    }
}

Теперь, по вашему мнению, вы должны импортировать MyNamespace, чтобы использовать этот метод расширения. Вы можете импортировать пространство имен в Razor, указав его в верхней части страницы следующим образом.

@using MyNamespace
...