我想将htmlAttributes作为参数传递给我的HtmlHelper,类似于它创建的 Html.ActionLink(“linktext”,“Home”,null, new {width =“100px”} ) 如何将这个新的{width =“100px”}传递给我的方法
public static string SelectCategoryAdminWithAllItem(this HtmlHelper htmlHelper, string name, **???**)
{ }
以及如何解析它?
由于
答案 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