/// <summary> /// (自定义)Html扩展方法,枚举类型生成下拉列表框。 /// <para> 下拉列表框的值属性:枚举类型的值</para> /// <para> 下拉列表框的显示属性:枚举类型的名称</para> /// </summary> /// <typeparam name="TPageModel">实体类型,通常为页面强类型。</typeparam> /// <typeparam name="TEnum">枚举类型。</typeparam> /// <param name="html"></param> /// <param name="propertyExpression">下拉列表框的属性。依此确定下拉列表框的名称以及当前选中项的值。</param> /// <param name="insertDefaultOption">是否在选项之前插入一条默认选项,如:“-请选择-”。缺省值为true。</param> /// <param name="defaultOptionText">插入默认选项的显示文字,缺省值为空。insertDefaultOption为true时,有效。</param> /// <param name="defaultOptionValue">插入默认选项的值,缺省值为字符串"0"。insertDefaultOption为true时,有效。</param> /// <returns></returns> public static MvcHtmlString SelectListFor <TPageModel, TEnum> ( this HtmlHelper <TPageModel> html, Expression <Func <TPageModel, TEnum> > propertyExpression, bool insertDefaultOption = true, string defaultOptionText = "", string defaultOptionValue = "0" ) { ModelMetadata metadata = ModelMetadata.FromLambdaExpression <TPageModel, TEnum>(propertyExpression, html.ViewData); string value = (metadata.Model == null ? null : metadata.Model.ToString()); List <SelectListItem> listItems = SelectListHelper.GetEnumSelectListItems(typeof(TEnum), value); if (insertDefaultOption) { listItems.Insert(0, new SelectListItem { Text = defaultOptionText, Value = defaultOptionValue, Selected = value == null }); } return(html.DropDownListFor(propertyExpression, listItems)); }