1

我有一个名为“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 行,因为还有很多其他字段需要验证,我想让它尽可能干净,那么有没有一种简单的方法来填充它的 name 值?

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

谢谢!

4

1 回答 1

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; }
}
于 2013-12-20T20:45:35.837 回答