我使用编辑器模板加载枚举器,代码就像
@model Enum
@{
// Looks for a [Display(Name="Some Name")] Attribute on your enum
Func<Enum, string> getDescription = en =>
{
Type type = en.GetType();
System.Reflection.MemberInfo[] memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.DisplayAttribute),
false);
if (attrs != null && attrs.Length > 0)
return ((System.ComponentModel.DataAnnotations.DisplayAttribute)attrs[0]).Name;
}
return en.ToString();
};
var listItems = Enum.GetValues(Model.GetType()).OfType<Enum>().Select(e =>
new SelectListItem()
{
Text = getDescription(e),
Value = e.ToString(),
Selected = e.Equals(Model)
});
@Html.DropDownList("", listItems, new {@class="form-control" })
}
在我的Razor视图中,我有一个具有2个属性的模型
@model RoyaltyDb.Models.LicenseItemModel
@Html.EditorFor(model => model.ItemMain, "Enum_DropdownList", new { @class = "form-control" })
@Html.EditorFor(model => model.SubClassModel.ItemSub, "Enum_DropdownList", new { @class = "form-control" })
我将对象引用设置为未设置为对象的实例。在线
var listItems = Enum.GetValues(Model.GetType()).OfType<Enum>().Select(e =>
new SelectListItem()
{
但第一行没有问题,即模型的主要属性。 这是我的枚举器,ItemMain和ItemSub的类型为CurrencyEnums
public enum CurrencyEnums
{
[Display(Name = "Nk")]
Nk,
[Display(Name = "Dollas")]
Dolar,
[Display(Name = "EURO")]
EUR
}
我知道为什么我的子类属性会出现null异常吗?