Как мы можем изменить тип данных свойства в частичном классе?

Привет, я новичок в MVC,

Файл.tt, соответствующий таблице в БД, имеет тип данных String for Gender. Я вручную объявил перечисление для пола в моем классе C#. Я также реализовал концепцию класса Partial и использовал метаданные для изменения типа данных свойства.

Но это, похоже, не влияет на модель, когда я обращаюсь к ней в контроллере. Я все еще получаю тип данных свойства Gender как строку, а не как Enum.

Я создал отдельные Enums для всех выпадающих списков в приложении, и теперь я сталкиваюсь с этой проблемой.

пожалуйста помоги.

1 ответ

Я хотел бы предложить, чтобы вы не меняли тип данных класса, сгенерированного дизайнером. Если это какой-то тип char в БД, тогда тип в конструкторе правильный для схемы БД. Одно из решений - определить перечисления и украсить их атрибутом description, используя метод расширения, как показано ниже:

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();
    }

Затем украсьте свой enum следующим образом:

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

Это позволит вам вызвать SomeType.FirstType.ToDescription(), чтобы передать значение свойству объекта.

Другие вопросы по тегам