2013-07-01 4 views
1

У меня есть модель под названием «Публикация», которая имеет другую модель внутри него под названием «Издательство»:MVC4 ModelState Validation и необходимые параметры

public class Publication 
{ 
    public int PublicationID { get; set; } 
    public Publisher Publisher { get; set; } 
} 

public class Publisher 
{ 
    public int PublisherID { get; set; } 

    [Required] 
    public string Name { get; set; } 
} 

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

Когда я добавляю еще одну публикацию, я должен выбрал издатель, это обязательное поле, и у меня есть DropDownList на странице, содержащей все издатели, так что пользователь может выбрать, какой издатель для этой публикации:

<div> 
    @HtmlDropDownListFor(model => model.Publisher.PublisherID, myPublisherList) 
</div> 

И это заполнение данных прекрасно, но я получаю сообщение об ошибке в строке:

if(ModelState.IsValid) 

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

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

Спасибо!

ответ

0

Из-за этого я использую разные модели с теми же названиями и структурами.

Для обзора:

О действии:

public class PublicationActionModel 
{ 
    public int PublicationID { get; set; } 
    public PublisherActionModel Publisher { get; set; } 
} 

public class PublisherActionModel 
{ 
    public int PublisherID { get; set; } 
} 
Смежные вопросы