我有一个名为“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的方法。
谢谢!
答案 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; }
}