我有一个MVC Web项目。根据最佳实践,添加验证规则和业务规则的正确位置在哪里?
验证规则将是必填字段和必填格式。
业务规则将是“此电子邮件已在数据库中接收”
这是我目前在注册模型中执行的操作:
public class RegisterModel : IValidatableObject
{
[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var retVal = new List<ValidationResult>();
using (var entity = new AcademicUniteDatabaseEntities())
{
if (entity.UserProfiles.Any(x => x.UserName == this.Email))
{
retVal.Add(new ValidationResult("Email already exist", new List<string> { "Email" }));
}
}
return retVal;
}
}
这是我的注册控制器:
public ActionResult Register()
{
var model = new RegisterModel();
return this.View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (!this.ModelState.IsValid)
{
return this.View(model);
}
model.CreateAccount();
return this.View("WaitConfirmEmail");
}
为什么我要这样
这是最佳做法吗?
一种选择是创建自定义验证器属性。使用您的解决方案,您可能会得到非常大的模型。另一种选择是创建可插入控制器的静态助手。这里没有正确的答案,这只是您想要组织代码的方式。我的首选是将业务逻辑分布在可以即插即用的自定义属性中。这样,您可以无缝重构。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句