视图中的 MVC 5 枚举 - 隐藏单个元素
Posted
技术标签:
【中文标题】视图中的 MVC 5 枚举 - 隐藏单个元素【英文标题】:MVC 5 Enum in view - hide single element 【发布时间】:2016-03-01 18:28:28 【问题描述】:我有一个简单的电子邮件状态枚举
public enum EmailStatus
Current,
Suspended,
Cancelled,
[Display(Name = "")]
invalid
如果无法解析电子邮件,则会在内部设置标志无效。我不希望该状态显示在编辑字段中;用户应该能够暂停或取消电子邮件,但不能将其设置为无效。
将显示名称设置为“”无效 - 仍然显示无效。剃须刀中是否有这种机制,还是我必须自己滚动?
【问题讨论】:
【参考方案1】:从编辑字段数据中排除该选项。例如:
var statuses = from EmailStatus s
in Enum.GetValues(typeof(EmailStatus))
where s != EmailStatus.invalid
select new Id = s, Name = s.ToString() ;
ViewBag.Statuses = new SelectList(statuses, "Id", "Name");
【讨论】:
这是一个简洁的答案;它以丢失枚举本身为代价来满足要求 - 我希望可能有某种形式的装饰可以用来抑制该领域。如果我这样做,我可能也只有两个枚举——一个是内部的,一个是用于显示的!以上是关于视图中的 MVC 5 枚举 - 隐藏单个元素的主要内容,如果未能解决你的问题,请参考以下文章
从 ASP.NET MVC 5 中的控制器 ActionResult 更改 html 元素样式