我正在为DropDownListFor写一个扩展名:
public static MvcHtmlString DropDownListFor<TModel,TProperty>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel,TProperty>> expression,IEnumerable<SelectListItem> selectList,object htmlAttributes,bool enabled) { return htmlHelper.DropDownListFor(expression,selectList,null /* optionLabel */,HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); }
我想要实现的是如果启用是false不会更改,但如果启用是真的我要添加@ disabled =“禁用”到html属性,然后再提供给AnonymousObjectToHtmlAttributes.
有什么想法呢?
解决方法
简单! HtmlHelper.AnonymousObjectToHtmlAttributes返回RouteValueDictionary.您可以向该字典添加值,您不需要向匿名对象添加属性.
public static MvcHtmlString DropDownListFor<TModel,bool enabled) { var attrs = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); if (!enabled) { attrs.Add("disabled","disabled"); } return htmlHelper.DropDownListFor(expression,attrs); }