如何将这些值显示为字符串?模型中的显示名称不起作用。我知道当枚举是列标题还是行标题时该怎么做,但是不知道何时使用过滤器。
视图中可过滤的代码:
.Filterable(
ftb =>
{
ftb.Multi(true);
ftb.DataSource(ds => ds.Read(r => r.Action("AccountTypeFilter", "Activity")).ServerFiltering(true));
})
控制器中的动作:
public ActionResult AccountTypeFilter()
{
var values = Enum
.GetValues(typeof(EAccountType))
.Cast<EAccountType>()
.Where(i => i != EAccountType._canLogIn && i != EAccountType._isAdmin && i != EAccountType._isSpecial)
.Select(i =>
new ActivityListItemViewModel()
{
AccountType = i
});
return Json(values);
}
枚举:
public enum EAccountType
{
Undefined = 0,
[Display(Name = "ActivityLogger.AccountType.Customer")]
Customer = 1 << 0, //1
[Display(Name = "ActivityLogger.AccountType.Supplier")]
Supplier = 1 << 1, //2
[Display(Name = "ActivityLogger.AccountType.Operator")]
Operator = 1 << 8, //256
[Display(Name = "ActivityLogger.AccountType.Admin")]
Admin = 1 << 15, //32768
[Display(Name = "ActivityLogger.AccountType.SuperAdmin")]
SuperAdmin = 1 << 16, //65536
[Display(Name = "ActivityLogger.AccountType.Cron")]
Cron = 1 << 19, //524288
[Display(Name = "ActivityLogger.AccountType.System")]
System = 1 << 20, //1048576
[Display(Name = "ActivityLogger.AccountType.ApiUser")]
ApiUser = 1 << 21, //2097152
[Display(Name = "ActivityLogger.AccountType.SearchEngine")]
SearchEngine = 1 << 22, //4194304
_canLogIn = Customer | Supplier | Operator | Admin | SuperAdmin, //98563
_isAdmin = Admin | SuperAdmin, //98304
_isSpecial = Cron | System | ApiUser | SearchEngine, //7864320
}