【问题标题】:ASP.NET MVC - pass htmlAttributes as parameterASP.NET MVC - 将 htmlAttributes 作为参数传递
【发布时间】:2011-06-06 10:21:13
【问题描述】:

我想将 htmlAttributes 作为参数传递给我的 HtmlHelper,就像它在 Html.ActionLink("linktext", "Home", null, new{width="100px"}) 如何将这个新的{width="100px"} 传递给我的方法

    public static string SelectCategoryAdminWithAllItem(this HtmlHelper htmlHelper, string name, **???**)
    { }

以及如何解析它?

谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 html-helper


    【解决方案1】:

    当对此类问题感兴趣时,请务必尝试查看来源。来自HtmlHelper.TextBox的实现

    public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes)
    {
        return htmlHelper.TextBox(name, value, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
    }
    

    如您所见,参数类型是object,因为您不能使用匿名类型作为方法的参数,而object 是选择。而解析的时候可以使用HtmlHelper.AnonymousObjectToHtmlAttributes Method

    【讨论】:

    • 我使用 ASP.NET MVC 2.0,而不是 3.0 :(
    【解决方案2】:

    在试图弄清楚这一点时,我查看了 MVC2 的源代码。在 MVC2 中,他们使用 System.Web.Routing 中的 RouteValueDictionary 重载将对象转换为字典,而不是像 MVC3 中那样使用辅助方法。

    public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes)
    {
        return htmlHelper.TextBox(name, value, new RouteValueDictionary(htmlAttributes));
    }
    

    有点反直觉,但这是 2 中的标准。

    编辑:更新标签以包含 mvc2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2011-07-25
      • 1970-01-01
      相关资源
      最近更新 更多