【问题标题】:MVC4 ModelState Validation and Required ParametersMVC4 ModelState 验证和必需参数
【发布时间】:2013-06-28 02:27:36
【问题描述】:

我有一个名为“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 的方法。

谢谢!

【问题讨论】:

    标签: asp.net-mvc-4 modelstate


    【解决方案1】:

    因此,我使用具有相同属性名称和结构的不同模型。

    对于视图:

    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-02-21
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多