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); 
     } 

然後我抓住這個ecxception在控制器級別,像這樣:

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

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

你會reccomend什麼作爲替代,或者你會建議我堅持我有什麼?

回答

1

和你一樣,我們希望爲MVC3和xVal的移除做好準備。我們通過編寫自己的RulesException,ErrorInfo類和擴展方法AddModelStateErrors添加到我們的框架中去除了依賴關係。

這樣,您只需要移除xVal並解析命名空間。如果你有一個重構工具,這是微不足道的。

我有一個gist這些類。

+0

是的那種有道理,但是我在我的域對象圖層/項目中使用RulesException ...您的代碼引用System.Web.Mvc,有沒有任何方法可以在我的域圖層中使用此功能而無需添加引用到System.Web.Mvc? – 2011-06-28 10:33:17

+0

忽略了......解決了這個問題:-) – 2011-06-28 10:35:36

+0

尋找自己在同一個盒子裏工作。什麼 – justSteve 2011-10-28 20:44:18