ASP.net MVC проблемы при связывании модели с подклассом - PullRequest
2 голосов
/ 22 мая 2011

У меня есть два типа контактных лиц.Тот, у которого просто есть адрес электронной почты, и тот, который исходит от этого и включает поля для почтового адреса.

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

  1. Когда проверка выполняется с использованием DataAnnotations, ее проверяемые поля из базового класса предшествуют полям из подкласса.Я действительно хочу, чтобы это произошло в обратном порядке.Есть ли способ переоформить заказ?Обычно, конечно, можно просто изменить порядок полей, но если поля находятся в разных классах, это невозможно.

  2. Я обнаружил, что мне нужно создать модельвручную, потому что связыватель модели по умолчанию, кажется, только хочет создать определенный тип, указанный в параметре действия.Когда я пытаюсь связать модель вручную с помощью UpdateModel, даже тогда она связывает только поля базового типа (базовый тип - это тип, возвращаемый моей фабрикой контактов).

У кого-нибудь есть совет по этому поводу?Похоже, мне придется вернуться к спагетти-коду, который постоянно оценивает тип контакта, над которым выполняется операция.

Приветствия, Ян.

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Я думаю, вам нужно создать свой собственный ModelBinder.Взгляните на ASP.NET MVC 3: DefaultModelBinder с наследованием / полиморфизмом .

0 голосов
/ 28 июня 2011

Можно попробовать реализовать общий интерфейс для обоих контактных лиц.И используйте этот параметр Интерфейс в действии, проверьте соответствие интерфейсу.

...