对于我的每个业务实体,我都有相应的视图模型。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