c# – 为视图创建或数据库存储定义选择/下拉选项的最佳实践方法是什么

前端之家收集整理的这篇文章主要介绍了c# – 为视图创建或数据库存储定义选择/下拉选项的最佳实践方法是什么前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我还不确定最佳方式来存储前端显示数据库存储的选择列表选项.

我一直在使用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行代码).但我绝对认为你会从超越基本的枚举中受益.根据您在问题中描述的方案,这是正确的方法.

猜你在找的C#相关文章