如何解决在ASP.NET MVC 3中使用枚举
| 是否有一种巧妙的方法来使MVC支架为枚举值的模型属性呈现下拉列表或列表框? 例:public class MyModel
{
public Color MyColor { get; set; }
public Option Options { get; set; }
}
public enum Color
{
None = 0,Red = 1,Blue = 2,White = 3
}
[Flags]
public enum Option
{
NotSet = 0,Option1 = 1,Option2 = 2,Option3 = 4,Option4 = 8
}
对于“颜色”属性,下拉列表会很不错。对于“选项”属性,组合框或复选框列表将很酷。
为此,MVC框架/工具中内置了什么支持?当前,当我从模型创建视图时,Visual Studio只是忽略枚举类型的模型属性。
实施此方法的最佳方法是什么?
解决方法
辅助方法
枚举下拉列表
我已经在自己的项目中成功利用了这一点。
public static MvcHtmlString EnumDropDownListFor<TModel,TEnum>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel,TEnum>> expression)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression,htmlHelper.ViewData);
Type enumType = GetNonNullableModelType(metadata);
IEnumerable<TEnum> values = Enum.GetValues(enumType).Cast<TEnum>();
TypeConverter converter = TypeDescriptor.GetConverter(enumType);
IEnumerable<SelectListItem> items =
from value in values
select new SelectListItem
{
Text = converter.ConvertToString(value),Value = value.ToString(),Selected = value.Equals(metadata.Model)
};
if (metadata.IsNullableValueType)
{
items = SingleEmptyItem.Concat(items);
}
return htmlHelper.DropDownListFor(
expression,items
);
}
,此处的绝佳解决方案:如何从ASP.NET MVC中的枚举创建下拉列表?
显然,这是用于下拉菜单,但是对于其他UI选项,您可以使用值的集合通过循环创建它们。
没有内置,但是很容易做到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。