我目前正在使用DataAnnotations验证我的MVC 2应用程序。不过,我遇到了一个小问题。
我现在有一个用户类型的对象,它有许多属性。所有这些都是必需的。
public class User
{
[Required(ErrorMessage = "Username is required")]
public string Username { get; set; }
[Required(ErrorMessage = "Password is required")]
public string Password { get; set; }
[Required(ErrorMessage = "Email is required")]
public string Email { get; set; }
[Required(ErrorMessage = "First name is required")]
public string Firstname { get; set; }
[Required(ErrorMessage = "Last name is required")]
public string Lastname { get; set; }
}
在注册时,这些都是使用ModelBinder映射的,并且一切都很好。但是,在“编辑我的详细信息”页面上,只能更新firstname、firstname和email。
每当视图回发并应用模型绑定时,我会得到一个警告用户名/密码是必需的字段。即使此时不需要。我想了两种方法来解决这个问题,我觉得这两种方法都不合适(但可能是错误的)。
1:创建自定义视图模型。这将很好地工作,但数据注释将需要应用于这个视图模型,这意味着对模型和用户对象进行重复验证。
2:包括renderd视图中的所有字段,并将它们发回。这有安全风险,看起来非常混乱,不能很好地扩展到复杂的视图模型。
有人能为这种情况推荐一个最佳实践吗?