繁体   English   中英

MVC模型验证多视图

[英]MVC Model Validation Multiple View

我有一个具有6个字段的模型类(所有字段都需要进行字段验证)。 我有两个使用此模型的视图。 我在一个视图中有三个字段(让我说abc.cshtml),而在另一个视图中又有六个字段(让我说xyz.cshtml),问题是,当我在abc.cshtml中提交表单并检查Controller中的ModelState.IsValid属性时,它正在验证所有未在视图上显示的字段,因此此属性似乎为false。 这是我的模特

  public class UserModel
  {
        [Required(ErrorMessage = "Enter UserName")]
        public string UserName { get; set; }

        [Required(ErrorMessage = "Enter Password")]
        public string Password { get; set; }

        [Required(ErrorMessage = "Enter Firstname")]
        public string Firstname { get; set; }

        [Required(ErrorMessage = "Enter LastName")]
        public string LastName { get; set; }

        [Required(ErrorMessage = "Enter Contact")]
        public string Contact { get; set; }

        [Required(ErrorMessage = "Enter Address")]
        public string Address { get; set; }
  }

我在一个视图中只有“用户名”,“名”和“姓”,在另一个视图中只有六个。 我该如何解决这个问题?

public class BaseModel{
       [Required(ErrorMessage = "Enter Firstname")]
        public string Firstname { get; set; }

        [Required(ErrorMessage = "Enter LastName")]
        public string LastName { get; set; }

        [Required(ErrorMessage = "Enter UserName")]
        public string UserName { get; set; }


}

   public class UserModel : BaseModel
  {

        [Required(ErrorMessage = "Enter Password")]
        public string Password { get; set; }

        [Required(ErrorMessage = "Enter Contact")]
        public string Contact { get; set; }

        [Required(ErrorMessage = "Enter Address")]
        public string Address { get; set; }
  }

Hope it will help you to reduce redundancy and work with different view also , i think that is he best way to tackle this kind of problem Thanks

在提交3个属性的情况下,在验证模型状态之前,请先清除其他属性的错误。

您可以通过执行以下操作来消除模型错误:

if (ModelState.ContainsKey("{key}"))
    ModelState["{key}"].Errors.Clear();

键:属性名称

在您的情况下,有3个属性,因此必须使用它(如果有条件)三次或直接清除已知属性的错误。

然后使用

ModelState.IsValid

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM