对于我的每个业务实体,我都有一个相应的视图模型.
我有一个通用的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));
}
Run Code Online (Sandbox Code Playgroud)
我在视图模型属性上使用数据注释,这对于简单的输入验证非常有用.
现在我有一个案例,我想确保不会偶然创建重复记录.
我的第一直觉是将这个逻辑放在存储库的Add方法中.这个实现很简单,但是如何让存储库添加模型状态错误并将一些有用的信息返回给用户?我觉得必须有一个解决方案,但我没有太多的运气搜索.
谢谢你的帮助!
我会使用异常。
根据 catch 块处的异常数据添加模型状态错误
try
{
repository.Add(entity);
}
catch(MyRepositoryException ex)
{
ViewData.ModelState.AddModelError(ex.Key, ex.Value.ToString(), ex.Message)
}
if (!ModelState.IsValid)
return Json(Failure(createView, model.SelectLists(repository)));
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1505 次 |
| 最近记录: |