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

C# 使用Razor将HtmlHelper实例传递给另一个方法MVC3,c#,asp.net-mvc-3,razor,extension-methods,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) o

好的,我创建了以下两种方法。第一个是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);
}
public static MvcHtmlString MakeBoxGroup(此HtmlHelper Html,列表名称)
{
字符串outsr=“”;
foreach(名称中的字符串名称)
outsr+=MakeBox(Html,名称);
返回新的MvcHtmlString(outtr);
}
公共静态MvcHtmlString生成框(HtmlHelper Html,字符串名称)
{
返回Html.CheckBox(名称);
}

我的问题:当我尝试这一点时,它告诉我HtmlHelper类没有实现CheckBox或任何这些类型的帮助程序。有人知道如何传递HtmlHelper的正确实例吗?我假设我只是使用了错误的类型,但我不确定。

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

using System.Web.Mvc.Html;

复选框
扩展方法位于该命名空间内
HtmlHelper
本身位于
System.Web.Mvc
中,可能正在使用它。

由于您没有完整的类,我无法判断您是否包含它,但请确保您包含了它

using System.Web.Mvc.Html;
在你的档案里


编辑:我粘贴了不同的名称空间,但我认为这更可能是您想要的名称空间。

给您。复选框位于静态类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);           
    }
使用System.Web.Mvc.Html;
public static MvcHtmlString MakeBoxGroup(此HtmlHelper Html,列表名称)
{
字符串outsr=“”;
foreach(名称中的字符串名称)
outsr+=MakeBox(Html,名称);
返回新的MvcHtmlString(outtr);
}
公共静态MvcHtmlString生成框(HtmlHelper Html,字符串名称)
{
返回Html.CheckBox(名称);
或
返回InputExtensions.CheckBox(Html,名称);
}

如果你想记下某个问题,请发表评论,这样我就知道你为什么认为这个问题不清楚或没有用了。我对你的问题投了反对票,因为它看起来像是无缘无故的驾车向下投票。这就是问题所在。非常感谢。我使用了InputExtensions,效果很好。HtmlHelper仍然说它没有定义它,但是哦,好吧。感谢您提供InputExtensions解决方案,我正在寻找这个解决方案!:)