MVC3 - сложная модель, свойства имеют одинаковое имя поля, невозможно отобразить модель - PullRequest
5 голосов
/ 23 ноября 2011

Мне нужна помощь в рендеринге сложной модели.

У меня сложная модель с 2 свойствами класса. Все 3 класса (AddProjectQnrModel, ProjectModel, QTModel) имеют свойства GroupId и GroupName.

public class AddProjectQnrModel
    {
        [Required]
        public int GroupId { get; set; }

        public string GroupName { get; set; }

        public ProjectModel Project { get; set; }

        public QCTModel QCT { get; set; }
    }

В представлении я использую шаблоны редактора:

@Html.EditorFor(x => x.Project, "_EditProject.cshtml")
@Html.EditorFor(x => x.QCT, "_QCT-v1.cshtml")

Я не могу использовать @ html.Partial, поскольку он не будет правильно связывать свойства, поэтому мне придется использовать шаблоны редактора.

При запуске проекта я получаю эту ошибку:

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

Описание: необработанное исключение произошло во время выполнения текущий веб-запрос. Пожалуйста, просмотрите трассировку стека для более информация об ошибке и ее возникновении в коде.

Сведения об исключении: System.InvalidOperationException: тип проверки имена в ненавязчивых правилах проверки клиента должны быть уникальными. следующий тип проверки был замечен более одного раза: требуется

Source Error: 

Line 26: 
Line 27:         @Html.EditorFor(x => x.Project, "_EditProject.cshtml")
Line 28: 
Line 29:         

1 Ответ

6 голосов
/ 23 ноября 2011

Я думаю, что вы столкнулись с чем-то вроде этой проблемы .

MVC автоматически добавит Обязательную проверку для GroupId, поскольку int не может быть обнуляемым типом . Когда вы добавляете явную спецификацию [Required], проверка дублируется и приводит к вашей ошибке. Удалите явный атрибут [Required] для любых свойств, которые по своей природе не обнуляются, и все должно работать так, как вы ожидаете.

В качестве альтернативы, если вы хотите предотвратить автоматическую генерацию в пользу явных объявлений [Required], вы можете добавить следующее к Application_Start, как видно из этого предыдущего ответа :

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...