Передайте экземпляр HtmlHelper другому методу MVC3 с помощью Razor - PullRequest
2 голосов
/ 29 июня 2011

Хорошо, я создал следующие два метода.Первый - это метод расширения HtmlHelper.Второй получает этот экземпляр помощника и устанавливает флажки.Мой реальный пример не имеет ничего общего с флажками, это был самый простой способ объяснить мою проблему.

public static MvcHtmlString MakeBoxGroup(this HtmlHelper<T> Html, List<string> names)
{
    string outStr = "";
    foreach(string name in names)
        outStr += MakeBox(Html, name);

    return new MvcHtmlString(outStr);
}

public static MvcHtmlString MakeBox(HtmlHelper<T> Html, string name)
{
    return Html.CheckBox(name);
}

Мой вопрос: Когда я пытаюсь это сделать, он говорит, что класс HtmlHelper не реализует CheckBoxлюбой из тех типов помощников.Кто-нибудь знает, как передать правильный экземпляр HtmlHelper вниз?Я предполагаю, что я просто использую неправильный тип здесь, но я не уверен.

Ответы [ 3 ]

2 голосов
/ 29 июня 2011

Вот и все. Checkbox находится в пространстве имен System.Web.Mvc.Html в статическом классе InputExtensions.

    using System.Web.Mvc.Html;

    public static MvcHtmlString MakeBoxGroup(this HtmlHelper Html, List<string> names)
    {
        string outStr = "";            
        foreach (string name in names)
            outStr += MakeBox(Html, name);

        return new MvcHtmlString(outStr);
    }

    public static MvcHtmlString MakeBox(HtmlHelper Html, string name)
    {
        return Html.CheckBox(name);
         OR
        return InputExtensions.CheckBox(Html,name);           
    }
0 голосов
/ 29 июня 2011

Поскольку у вас нет полного класса, я не могу сказать, включили вы его или нет, но убедитесь, что в вашем файле есть

using System.Web.Mvc.Html;

.

РЕДАКТИРОВАТЬ: Я вставил другое пространство имен, но я думаю, что это скорее тот, который вы хотите.

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

Я полагаю, что в вашем классе расширений отсутствует оператор using.

using System.Web.Mvc.Html;

Метод расширения CheckBox находится в этом пространстве имен. HtmlHelper находится в System.Web.Mvc, который, вероятно, используется.

...