MVC4 ModelState验证和必需参数

时间:2013-07-01 01:47:09

标签: asp.net-mvc-4 modelstate

我有一个名为“Publication”的模型,其中有另一个名为“Publisher”的模型:

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行,因为有许多其他字段需要验证,我想尽可能保持干净,所以有一种简单的方法来填充它的名称值吗?

我想添加一个隐藏字段,并在每次用户更改Select时使用Javascript填充值,但如果可能的话,我想使用更清晰且无javascript的方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

由于这个原因,我使用具有相同属性名称和结构的不同模型。

对于视图:

public class PublicationViewModel
{
    public int PublicationID { get; set; }
    public PublisherViewModel Publisher { get; set; }
}

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

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

关于行动:

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

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