视图中的 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 枚举 - 隐藏单个元素的主要内容,如果未能解决你的问题,请参考以下文章

启用对隐藏元素的验证

如何根据 MVC 中的控制器隐藏共享布局中的元素

从 ASP.NET MVC 5 中的控制器 ActionResult 更改 html 元素样式

ASP.NET MVC SiteMap 提供程序——如何在实际菜单中“隐藏”单个项目

MVC Razor 隐藏输入和传递值

通过 MVC 局部视图注入时,Bootstrap 模态显示和隐藏事件未触发