ASP.NET MVC - 将htmlAttributes作为参数传递

时间:2011-06-06 10:21:14

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

我想将htmlAttributes作为参数传递给我的HtmlHelper,类似于它创建的 Html.ActionLink(“linktext”,“Home”,null, new {width =“100px”} ) 如何将这个新的{width =“100px”}传递给我的方法

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

以及如何解析它?

由于

2 个答案:

答案 0 :(得分:5)

在对此类问题感兴趣时,请务必查看来源。从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

答案 1 :(得分:3)

当我试图找出这个时,我查看了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