我还不确定最佳方式来存储前端显示或数据库存储的选择列表选项.
我一直在使用Enums,也使用描述装饰器(How do you create a dropdownlist from an enum in ASP.NET MVC?)
我现在想我也可以为这些东西创建一个完整的类,所以我可以完全控制地存储以下信息:
>项目名称
>完整描述
> int用于存储在db中
>订单
>从列表中获取信息的任何方法.
是不是我应该考虑用手自己实现这一切?我想要一个非常可靠的方法来做到这一点,并且一个enum并不真的觉得它会削减它.
解决方法
Is it right I should be thinking about implementing all this myself by
hand?
是.枚举通常是leaky and insufficient abstractions,并不总是适合您实际希望表示的复杂域模型.
您可能需要考虑Headspring的Enumeration类(通过github,nuget),而不是自己动手.我们一直使用它而不是枚举,因为它几乎一样简单,而且更灵活.
“状态”枚举的一个示例,并将其用作选择列表:
public class State : Enumeration<State> { public static State Alabama = new State(1,"AL","Alabama"); public static State Alaska = new State(2,"AK","Alaska"); // .. many more public static State Wyoming = new State(3,"WY","Wyoming"); public State(int value,string displayName,string description) : base(value,displayName) { Description = description; } public string Description { get; private set; } } public IEnumerable<SelectListItem> Creating_a_select_list(State selected) { return State.GetAll().Select( x => new SelectListItem { Selected = x == selected,Text = x.Description,Value = x.Value.ToString() }); }
我不是想在这个特定的实现上卖给你,你当然可以自己编写代码(Enumeration类只有大约100行代码).但我绝对认为你会从超越基本的枚举中受益.根据您在问题中描述的方案,这是正确的方法.