MVC模型验证多视图

本文关键字:视图 验证 模型 MVC | 更新日期: 2023-09-27 17:59:12

我有一个包含6个字段的模型类(所有字段都需要进行字段验证)。我有两个视图正在使用这个模型。我在一个视图中有三个字段(比如abc.cshtml),在另一个视图(比如xyz.cs.html)中有六个字段问题是,当我在abc.cshtml中提交表格并检查时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; }
  }

我在一个视图中只有Username、Firstname和Lastname,而在另一个视图则全部有六个。我该如何解决这个问题?

MVC模型验证多视图

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