MVC模型验证多视图

时间:2016-07-28 11:01:24

标签: c# asp.net-mvc-4 razor

我有一个包含6个字段的模型类(所有字段都需要字段验证)。我有两个使用此模型的视图。 我在一个视图中有三个字段(比如abc.cshtml)和另外六个字段(比如说xyz.cshtml) 问题是,当我在abc.cshtml中提交表单并检查时 在Controller中的ModelState.IsValid属性,它验证所有字段,即使在视图中没有显示,因此该属性看起来是假的。 这是我的模特

vc.release()
cv2.destroyWindow("preview")
cv2.destroyAllWindows()

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

如果提交3个属性,则在验证模型状态之前,对其他属性有明确的错误。

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

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

键:属性名称

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

使用后

ModelState.IsValid