Example #1
0
        /// <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));
        }