2013-07-01 51 views
1

我有一个名为“出版物”的模式,它有另一种模式里面所谓的“出版商”:MVC4的ModelState验证和所需参数

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) 

由于发行者的名称没有被指定的,即使我只需要ID。 我不想砸Model.IsValid线,因为有一堆需要验证等领域,我想离开它尽可能的干净,那么有没有一种简单的方法来填补它的名字值?

我想添加一个隐藏的字段,并使用Javascript来填充每次用户更改选择时的值,但我希望尽可能使用清洁和无JavaScript的方法。

谢谢!

回答

0

我用不同型号由于此相同的属性名称和结构。

对于视图:

在动作:

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

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