将HtmlHelper实例传递给另一个使用Razor的方法MVC3

时间:2011-06-29 15:20:40

标签: c# asp.net-mvc-3 razor extension-methods

好的,我创建了以下两种方法。第一个是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 个答案:

答案 0 :(得分:2)

这里你去.Checkbox在静态类InputExtensions中的System.Web.Mvc.Html命名空间中。

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

答案 1 :(得分:0)

我假设您在扩展类中缺少using语句。

using System.Web.Mvc.Html;

CheckBox扩展方法位于该命名空间内。 HtmlHelper本身位于可能使用的System.Web.Mvc中。

答案 2 :(得分:0)

由于你没有全班,我不知道你是否包括它,但确保你有

using System.Web.Mvc.Html;

在您的档案中。

编辑:我粘贴了一个不同的命名空间,但我认为这更像是你想要的命名空间。