1

我目前正在重构我的项目,我不太确定的一件事是如何处理业务验证错误。

目前我正在使用 xVal 库中的 RulesException 类,我相信这个库不再被开发,所以我可能需要相应地更新我的代码......这是我在域模型上的一种方法的示例:

 public virtual void AddComment(ProfileComment comment)
        {
            // ensure account is active before sending a message
            if (comment.FromAccount.AccountStatus != Enums.Common.AccountStatus.Active) throw new RulesException("", "Your account is not active");

            // throw exception if user has blocked this user
            if (HasUserBeenBlocked(comment.FromAccount)) throw new RulesException("", "User has blocked this action being performed.");

            TotalComments++;
            Comments.Add(comment);
        }

然后我在控制器级别捕获这个异常,如下所示:

// process adding new comment
        try
        {
            accountTasks.PostProfileComment(user, account, profileComment);
        }
        catch (RulesException ex)
        {
            ex.AddModelStateErrors(ModelState);
        }

        if (!ModelState.IsValid)
        {
            return Json(ModelState.Errors());
        }

你会推荐什么作为替代方案,或者你会推荐我坚持我所拥有的?

4

1 回答 1

1

和您一样,我们希望为 MVC3 和 xVal 的移除做好准备。我们通过编写自己的 RulesException、ErrorInfo 类和添加到我们框架的扩展方法 AddModelStateErrors 来删除依赖项。

这样,您只需删除 xVal 并解析命名空间。如果您有重构工具,这很简单。

我对这些课程有一个要点

于 2011-06-25T18:13:45.020 回答