我正在使用 ASP.NET MVC 4 (Beta)、VS 11 (Beta)、EF 5 (Beta) 设计一个新网站,但这个问题也适用于 ASP.NET MVC 3、VS 2010、EF 4 的已发布版本.
第一步:我使用实体框架代码优先方法,例如,我有以下用户模型:
public class User
{
[Key]
public int UserId {get;set;}
public String LoginName { get; set; }
public String Password { get; set; }
}
现在,为了注册,我需要另一个模型,注册模型:
public class Registration
{
public String LoginName { get; set; }
public String Password { get; set; }
public String PasswordConfirm { get; set; }
}
这就是我的问题开始的地方:我应该把我的 DataValidation Annotations 放在哪里?例如,密码至少应包含 10 个字符,并且 PasswordConfirmed 必须与 Password 匹配,依此类推。我是否必须在每个可以用密码做某事的模型上写这个(我也在考虑有一个 ChangePassword 模型)
另一件事是如何处理控制器。当我显示我的注册视图模型并且一切正常时,我是否创建一个用户模型并将变量从注册视图模型分配给它?
有时我有很多属性进入数据库,但没有向用户显示(外键、计算值等)。
作为对 DRY 的思考,我不想重复我自己。
这个的最佳实践是什么?
需要明确的是:注释不是必需的。如果有更好的方法来验证,我会很高兴,如果你告诉他们。