MVC中的验证规则和业务规则

雅各布·赫克

我有一个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");
    }

为什么我要这样

  1. 当我在控制器中检查ModelState.IsValid时,它将检查电子邮件的格式以及数据库中是否已存在该电子邮件。我没有在控制器中对数据库进行任何调用,仅在模型中。(这是最佳做法吗?)
  2. 它还将“电子邮件已存在”验证结果绑定到我的“电子邮件”属性,因此我可以在视图上显示验证结果。

这是最佳做法吗?

  1. 这是在MVC中添加业务规则的正确方法吗?
  2. 为什么或者为什么不?
  3. 如果这不是最佳实践,那么您能否提供一个示例,说明如何最好地编程该注册模型来检查业务规则(如果已经存在电子邮件)?
beautifulcoder

一种选择是创建自定义验证器属性。使用您的解决方案,您可能会得到非常大的模型。另一种选择是创建可插入控制器的静态助手。这里没有正确的答案,这只是您想要组织代码的方式。我的首选是将业务逻辑分布在可以即插即用的自定义属性中。这样,您可以无缝重构。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MVC中的验证规则和业务规则

来自分类Dev

DDD不变式业务规则和验证

来自分类Dev

CQRS-业务验证规则

来自分类Dev

BizTalk部署和业务规则

来自分类Dev

MS CRM:SetStateRequest 和业务规则冲突

来自分类Dev

访问中的验证规则

来自分类Dev

访问中的验证规则

来自分类Dev

如何使用sequelize验证节点应用程序中的业务规则?

来自分类Dev

是否存在良好的安全和访问管理策略来管理作为代码存储在数据库数据表中的业务逻辑验证规则?

来自分类Dev

MDS业务规则

来自分类Dev

DDD-实体创建业务规则验证

来自分类Dev

从业务层检索的控制器的验证规则

来自分类Dev

Yii中的条件验证规则

来自分类Dev

XU连接池和Bluemix上的业务规则服务

来自分类Dev

Bluemix上的异步RulesetParsing XU属性和业务规则服务

来自分类Dev

在解决方案中实现业务规则引擎的方法或模式?

来自分类Dev

CRM 2013业务规则调试

来自分类Dev

jQuery规则验证,允许整数和空格

来自分类Dev

添加或删除验证规则和消息

来自分类Dev

wpf 委托命令和验证规则

来自分类Dev

Red_Hat_JBoss_BPM_Suite 6.3-业务规则任务中缺少DataInputSet和DataOutputSet字段

来自分类Dev

验证规则在Laravel中如何工作

来自分类Dev

在codeigniter中创建自己的表单验证规则

来自分类Dev

Microsoft Access中的复杂验证规则

来自分类Dev

验证规则中的“位置”-访问VBA

来自分类Dev

Breeze js-如何在保存时验证复杂的业务规则?

来自分类Dev

如何为Bluemix上的业务规则验证正确的输入有效负载格式?

来自分类Dev

如何在CL编程中添加编辑和验证规则?(AS400)

来自分类Dev

允许字段,但没有义务在firebase规则和验证中

Related 相关文章

热门标签

归档