Det*_*ium 2 c# asp.net-mvc enums
我有enum以下扩展名:
public static class EnumExtension
{
public static SelectList ToSelectList(this Enum en)
{
var list = (from Enum d in Enum.GetValues(en.GetType())
select new SelectListItem { Value = d.ToString(("d")), Text = Enum.GetName(en.GetType(), d) }).ToList();
var selectedValue = (int) Enum.Parse(en.GetType(), Enum.GetName(en.GetType(), en));
return new SelectList(list, "Value", "Text", selectedValue);
}
}
Run Code Online (Sandbox Code Playgroud)
这是enum我在说的:
public enum BillingInterval
{
Monthly = 1,
Quarterly = 2,
Yearly = 3
}
Run Code Online (Sandbox Code Playgroud)
有了这个enum和扩展,就可以做到以下几点
public ActionResult Test()
{
var vm = new CustomerViewModel();
vm.BillingIntervalOptions = CustomerModel.BillingInterval.ToSelectList();
}
Run Code Online (Sandbox Code Playgroud)
现在我的模型SelectList包含了我的值enum
问题
我刚刚创建了另一个enum,我想这enum会有相同的扩展名,但是当我尝试以下内容时,我得到一个编译错误:
public enum Status
{
Trial = 1,
Demo = 2,
Setup = 3,
Production = 4
}
public ActionResult Test()
{
var vm = new CustomerViewModel();
vm.BillingIntervalOptions = CustomerModel.BillingInterval.ToSelectList();
//This gives me a compile error
vm.StatusOptions = Status.ToSelectList();
}
Run Code Online (Sandbox Code Playgroud)
"状态"不包含"ToSelectList"的定义
我不太确定为什么我的一个enums有扩展但另一个没有.
注意: 第二个枚举与枚举Status不在同一个文件中BillingInterval.这可能是问题吗?
CustomerModel.BillingInterval是一个拥有价值的财产enum.Status是一种类型,而不是一个实例.
由于扩展方法仅适用于实例而不适用于类型,因此第二个语句失败.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |