【问题标题】:Pass HtmlHelper instance to another method MVC3 with Razor使用 Razor 将 HtmlHelper 实例传递给另一个方法 MVC3
【发布时间】:2011-06-29 15:20:39
【问题描述】:

好的,我创建了以下两种方法。第一个是 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 实例?我假设我只是在这里使用了错误的类型,但我不确定。

【问题讨论】:

  • 评论如果你想标记一些东西,所以我知道你为什么认为这个问题不清楚或没有用
  • 我对你的问题投了反对票,因为这似乎是无缘无故地投反对票。

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


【解决方案1】:

给你。复选框位于静态类 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);           
    }

【讨论】:

  • 这是问题所在。谢谢你!我使用了 InputExtensions,效果很好。 HtmlHelper 仍然说它没有定义,但是哦。
  • 感谢您提供 InputExtensions 解决方案,我正在寻找这个解决方案! :)
【解决方案2】:

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

using System.Web.Mvc.Html;

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

【讨论】:

    【解决方案3】:

    由于您没有完整的课程,我无法确定您是否已将其包含在内,但请确保您拥有

    using System.Web.Mvc.Html;
    

    在您的文件中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 2018-01-23
      相关资源
      最近更新 更多