您还可以创建自己的 DropDownListFor 重载,它接受一个bool disabled
参数并为您完成繁重的工作,这样您的视图就不会被if disablethisfield then ...
.
这些行中的某些东西可以做:
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, bool disabled)
{
if (disabled)
return MvcHtmlString.Create(htmlHelper.HiddenFor(expression).ToString() + htmlHelper.DropDownListFor(expression, selectList, new { disabled="disabled" }).ToString());
else
return htmlHelper.DropDownListFor(expression, selectList);
}
仅 DropDownListFor 就有 6 个重载,所以它是很多猴子编码,但它最终得到了回报。