避免在 MVC3 中编辑时进行验证

本文关键字:验证 编辑 MVC3 | 更新日期: 2023-09-27 17:56:41

我正在使用下面给定的类模型(使用 C# 的 MVC 3)来注册员工。密码/确认密码字段在新注册时使用。当我编辑现有员工时,我不想再次更新/填写他们的密码/确认密码,但由于给定的验证(密码和确认密码),它不允许我更新员工的其余信息。

 public class EmployeeModel
    {   
    ....
    ....
    [Required(ErrorMessage = "Password is must")]
    [Display(Name = "Password")]
    [MaxLength(20, ErrorMessage = "Password can be maximum 20 chars long")]
    [StringLength(20, ErrorMessage = "Password can be maximum 20 chars long")]
    [MinLength(5, ErrorMessage = "Not a valid password, must be atleast 5 chars long")]
    public string Password { get; set; }
    [Compare("Password", ErrorMessage = "Password and Confirm password do not match")]
    public string ConfirmPassword { get; set; }
    ....
    ....
    }

我的问题是:我是否应该创建另一个模型类来编辑员工(此新模型将没有密码/确认密码字段)?但是我觉得这是有问题的,因为这种情况也可能出现在其他一些模块上,我不想最终为每个模块提供两个模型类。

或者我应该在编辑时加载密码/确认密码字段,但对用户隐藏它们吗?上述步骤有意义吗?还有哪些其他方法可以?

避免在 MVC3 中编辑时进行验证

有viewmodal的概念。为每个视图创建单独的模式以避免这种情况

如果您的编辑器视图需要不同的字段和验证,那么最好创建一个适当的视图模型来编辑视图。那个MVC所以享受它。

无需创建另一个模型类。

您可以使用现有模型类,如果您不希望验证中包含任何字段,则可以将其从 ModelState 中删除。

这是你应该怎么做的:

public ActionResult Edit(EmployeeModel empmodel)
{
        ModelState.Remove("Password");
        ModelState.Remove("ConfirmPassword");
        if (ModelState.IsValid)
        {
          //do something
        }
}

希望对你有帮助