在我的操作中,我需要从数据库中删除一些行。但是如果抛出异常,我需要使用当前模型返回View:
[HttpGet]
public ActionResult Delete(int id)
{
try
{
mDataMgr.DeleteUnit(id);
}
catch (DataManagerException ex)
{
if (ex.Error == DataManagerError.UnitHasMaps)
{
ModelState.AddModelError(String.Empty, "Unit has maps");
UnitRegionsViewModel regionsVM = new UnitRegionsViewModel()
{
Regions = mDataMgr.UnitRegions(id),
UnitId = id
};
return View("View", regionsVM);
}
}
return RedirectToAction("List");
}
我必须从数据库重新加载我当前的模型。有没有办法在我的行动中获得当前的模型?
答案 0 :(得分:2)
没有“当前型号”这样的东西。网页是“无国籍的”。呈现页面后,有关该页面的所有信息都将消失,包括其模型。如果想要获取该信息,通常会将模型发布回控制器。
您当然可以将模型序列化为页面中的隐藏字段,然后将该模型作为Delete方法的参数接受。但是,如果任何这些信息是敏感的,那么你不应该这样做。
答案 1 :(得分:0)
或者,您可以从数据库中获取该模型并将其发回去?既然您拥有应该是您可能做的ID。或者更好的方法是让删除Action接受完整的模型。这样,如果删除失败而没有从数据库中获取,您可以返回它吗?或者,如果删除失败,您的存储库中的删除方法应该发回一个完整的模型?一切都可以完成。