首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC部分验证(ModelState.IsValid Vs ModelState.IsValidField)

MVC部分验证(ModelState.IsValid Vs ModelState.IsValidField)
EN

Stack Overflow用户
提问于 2012-08-23 14:03:37
回答 1查看 6K关注 0票数 0

在MVC项目中,我有一个包含(假设) 10个属性的类,所有这些属性都是必需的。在用户选择的情况下,我只需要验证3个属性一次,其他时间所有的属性。

这些是我的类Patient的属性:

代码语言:javascript
复制
    [Required(ErrorMessage = "Last Name is required")]
    [StringLength(50)]
    public string responsibleLastName;

    [Required(ErrorMessage = "First Name is required")]
    [StringLength(50)]
    public string responsibleFirstName;

    [Required(ErrorMessage = "Address is required")]
    [StringLength(50)]
    public string responsibleAddressLine1;

    [Required(ErrorMessage = "City is required")]
    [StringLength(50)]
    public string responsibleCityName;

    [Required(ErrorMessage = "State is required")]
    [StringLength(2)]
    public string responsibleStateCode;

    [Required(ErrorMessage = "Zip Code is required")]
    [StringLength(10)]
    public string responsiblePostalZoneOrZIPCode;

    [Required(ErrorMessage = "Birth Date is required")]
    public DateTime responsibleBirthDate;

    [Required(ErrorMessage = "Gender is required")]
    public string responsibleGenderCode;

    [Required(ErrorMessage = "Home Phone is required")]
    [StringLength(10)]
    public string responsibleHomePhone;

在保存之前,我在控制器中做验证:

代码语言:javascript
复制
 if (firstCondition)  //partial validation
        {      if (!ModelState.IsValidField("responsibleLastName"))
            {
                ModelState.AddModelError("responsibleLastName", "Last Name is required");
            isOK = false;
             }
              //... and 2 more validation

              //finally I check the isOK value

               if (!isOK)
                  return PartialView("firstCondition", model);
               else
                  // do something

        }
else {   //validate all the properties from the model
    if (!ModelState.IsValid)
            return PartialView("secondCondition", model);   
    else
           //do something
}

在第一种情况下,我的消息对于这3个属性+类的所有错误消息都是重复的。

ModelState.IsValidField正在调用Model.IsValid,并获取每个属性的ModelValidationResult列表,然后检查我想要的字段的结果?为什么消息是重复的?

我想使用模型验证工具,所以我不想手动验证值

代码语言:javascript
复制
//NOT
 if (!model.responsibleLastName == "")
            {
                ModelState.AddModelError("responsibleLastName", "Last Name is required");
            isOK = false;
             }

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2012-08-23 18:16:48

您可以使用此博客post中指定的自定义RequiredIf验证属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12085628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档