對於我的每個業務實體,我都有相應的視圖模型。ASP.NET MVC:如何讓我的業務規則驗證泡泡到表示層?
我有一個通用的CRUD控制器,它的工作原理是這樣的:
[HttpPost]
public virtual ActionResult Create(TViewModel model, int? id)
{
// Validate input
if (!ModelState.IsValid)
return Json(Failure(createView, model.SelectLists(repository)));
// Prepare Model
var entity = new TModel();
// Add to repository
UpdateModel(entity);
repository.Add(entity);
repository.Save();
return Json(CreateSuccess(entity));
}
我在我的視圖模型屬性使用數據註釋,這對於簡單的輸入驗證的偉大工程。
現在我有一個情況,我想確保重複記錄不是偶然創建的。
我的第一個直覺就是把這個邏輯放到版本庫的Add方法中。這個實現很簡單,但是如何獲取存儲庫來添加模型狀態錯誤並向用戶返回一些有用的信息?我覺得有必要有一個解決方案,但我沒有太多的運氣搜索。
感謝您的幫助!
看起來像我在下面發佈的基本的書呆子晚餐概念的一個很好的總結。正如我在我的回答中所述,我不喜歡使用異常的想法,而是主動在實體(或本例中的存儲庫)上調用Validate()方法。謝謝! – 2011-01-28 03:19:21