0

在我的操作中,我需要从数据库中删除一些行。但是如果抛出异常,我需要用当前模型返回 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");
    }

我必须从数据库重新加载我当前的模型。有什么方法可以在我的操作中获取当前模型?

4

2 回答 2

2

没有“当前模型”之类的东西。网页是“无状态的”。一旦页面被渲染,关于该页面的所有信息都消失了,包括它的模型。如果他们想要获取该信息,通常会将模型发布回控制器。

您当然可以将模型序列化为页面中的隐藏字段,然后接受该模型作为 Delete 方法的参数。但是,如果其中任何信息是敏感信息,则不应该这样做。

于 2013-08-04T22:24:37.757 回答
0

或者,您可以从数据库中获取该模型并将其发回?既然您拥有应该是您可能会做的事情的 ID。或者更好的方法是让 delete Action 接受完整的模型。这样,如果删除失败而不从数据库中获取,您就可以返回它吗?或者,如果删除失败,您的存储库中的删除方法应该发回一个完整的模型?一切都可以做到。

于 2013-08-05T02:38:33.780 回答