Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC3中编辑时避免验证_C#_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# 在MVC3中编辑时避免验证

C# 在MVC3中编辑时避免验证,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我使用下面给定的类模型(使用C#的MVC 3)来注册员工。密码/确认密码字段在新注册时使用。 当我编辑现有员工时,我不想再次更新/填写他们的密码/确认密码,但由于给定的验证(关于密码和确认密码),它不允许我更新员工的其余信息 public class EmployeeModel { .... .... [Required(ErrorMessage = "Password is must")] [Display(Name = "Password")]

我使用下面给定的类模型(使用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; }
    ....
    ....
    }
我的问题是:我是否应该创建另一个模型类来编辑员工(这个新模型将没有密码/确认密码字段)?但我发现它有问题,因为这种情况也可能出现在其他一些模块中,我不希望每个模块都有两个模型类

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

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

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

无需创建另一个模型类

您可以使用现有的模型类,如果您不想在验证中包含任何字段,您可以将它们从ModelState中删除

这是你应该做的:

public ActionResult Edit(EmployeeModel empmodel)
{

        ModelState.Remove("Password");
        ModelState.Remove("ConfirmPassword");
        if (ModelState.IsValid)
        {
          //do something
        }

}

希望它有助于创建一个单独的模型,以便在没有密码的情况下进行编辑,或者如果您不需要,可以将其设置为可选。