WedX - журнал о программировании и компьютерных науках

Модель частичного представления для редактирования должна содержать все поля, указанные в MetadataType?

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

Код:

[MetadataType(typeof(IAdministrator))]
    public partial class Administrator : IAdministrator
    {
        public string Name { get { return String.Format("{0} {1}", FirstName, LastName); } }
    }

    [MetadataType(typeof(IAdministrator))]
    public class AdministratorEdit
    {
        public int AdministratorID { get; set; }

        public string EmailAddress { get; set; }

        public string FirstName { get; set; }

        public string LastName { get; set; }

        [DisplayName("New Password")]
        [DataType(DataType.Password)]
        [StringLength(12, MinimumLength = 8)]
        public string NewPassword { get; set; }

        [DisplayName("Re-New Password")]
        [DataType(DataType.Password)]
        [StringLength(12, MinimumLength = 8)]
        public string ReNewPassword { get; set; }
    }

    public interface IAdministrator
    {
        [Required]
        [DisplayName("Email Address")]
        [DataType(DataType.EmailAddress)]
        [RegularExpression(@"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$")]
        [StringLength(320)]
        string EmailAddress { get; set; }

        [Required]
        [DisplayName("Password")]
        [DataType(DataType.Password)]
        [StringLength(12, MinimumLength = 8)]
        string Password { get; set; }

        [Required]
        [DisplayName("First Name")]
        [DataType(DataType.Text)]
        [StringLength(25)]
        string FirstName { get; set; }

        [Required]
        [DisplayName("Last Name")]
        [DataType(DataType.Text)]
        [StringLength(25)]
        string LastName { get; set; }

        [DisplayName("Date Created")]
        [DataType(DataType.Date)]
        DateTime Date { get; set; }
    }

Это исключение, которое я получаю из представления, использующего модель AdministratorEdit: связанный тип метаданных для типа «....Models.AdministratorEdit» содержит следующие неизвестные свойства или поля: пароль, дата. Убедитесь, что имена этих элементов совпадают с именами свойств основного типа.

Может ли кто-нибудь предложить другой метод создания модели представления без указания другого типа метаданных или просто быстрое исправление для этого исключения?


Ответы:


1

Из вашего интерфейса IAdminstrator вы можете извлечь базовый класс (интерфейс), базовый интерфейс будет иметь только поля редактирования (IAdministratorEdit), а IAdministrator останется со всеми полями, поскольку он наследуется от IAdministratorEdit.

public interface IAdministrator : IAdministratorEdit 

а затем просто используйте интерфейс IAdministratorEdit в вашей ViewModel. Таким образом, вам нужно только один раз определить ограничения в метаданных.

10.07.2011
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]