我使用下面给出的类模型(使用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; }
....
....
}
我的问题是:我是否应该为编辑员工创建另一个模型类(这个新模型没有密码/确认密码字段)?但我觉得它有问题,因为这种情况也可能出现在其他一些模块中,我不想最终为每个模块设置两个模型类。
或者我应该在编辑时加载密码/确认密码字段,但是要将其隐藏起来吗? 上述步骤有意义吗?还有什么方法可以吗?
答案 0 :(得分:0)
如果编辑器视图需要不同的字段和验证,则最好为编辑视图创建正确的视图模型。 MVC非常喜欢它。
答案 1 :(得分:0)
有viewmodal的概念。为每个视图创建单独的模态以避免这种情况
答案 2 :(得分:0)
无需创建另一个模型类。
您可以使用现有的模型类,如果您不想在验证中包含任何字段,可以将它们从ModelState中删除。
这是你应该怎么做的:
public ActionResult Edit(EmployeeModel empmodel)
{
ModelState.Remove("Password");
ModelState.Remove("ConfirmPassword");
if (ModelState.IsValid)
{
//do something
}
}
希望有所帮助