【问题标题】:How can we change the datatype of a property in a Partial class?我们如何更改 Partial 类中属性的数据类型?
【发布时间】:2014-06-29 12:04:39
【问题描述】:

你好,我是 MVC 的新手,

与数据库中的表对应的 .tt 文件的数据类型为 String for Gender。我已经在我的 C# 类中手动声明了 Gender 的枚举。我还实现了 Partial 类概念并使用元数据来更改属性的数据类型。

但是当我在控制器中访问模型时,这似乎对模型没有任何影响。我仍然将属性 Gender 的数据类型作为字符串而不是 Enum。

我已经为应用程序中的所有下拉菜单创建了单独的枚举,现在我正面临这个问题。

请帮忙。

【问题讨论】:

    标签: c# entity-framework partial-classes


    【解决方案1】:

    我建议您不要更改设计器生成的类的数据类型。如果它是数据库中的某种类型的字符,那么设计器中的类型根据数据库模式是正确的。一种解决方案是定义枚举并使用如下扩展方法用描述属性装饰它们:

    public static string ToDescription(this Enum value)
        {
            var da =
                (DescriptionAttribute[])
                    (value.GetType().GetField(value.ToString())).GetCustomAttributes(typeof(DescriptionAttribute),
                        false);
            return da.Length > 0 ? da[0].Description : value.ToString();
        }
    

    然后像这样装饰你的枚举:

    public enum SomeType
        {
            [Description("Type1")] FirstType,
            [Description("Type2")] SecondType,
            [Description("Type3")] ThirdType
        }
    

    这将允许您调用 SomeType.FirstType.ToDescription() 将值传递给您的实体属性。

    【讨论】:

    • 嗨...我使用的属性与您提到的相同。我正在使用自定义 HtmlHelper 从 Enum 填充性别的下拉列表。我还有一个 StringValue 属性类,它具有您提到的描述。我无法将枚举名称从视图传递给 HtmlHelper,以便我可以填充下拉列表。
    • 在您的视图模型上创建一个 List myEnumsDropDownValues 属性以存储下拉值并在您的视图中使用它。
    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2019-03-11
    • 2023-01-22
    相关资源
    最近更新 更多