asp mvc 4.在控制器中获取当前模型

时间:2013-08-04 22:13:02

标签: asp.net-mvc asp.net-mvc-4

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

我必须从数据库重新加载我当前的模型。有没有办法在我的行动中获得当前的模型?

2 个答案:

答案 0 :(得分:2)

没有“当前型号”这样的东西。网页是“无国籍的”。呈现页面后,有关该页面的所有信息都将消失,包括其模型。如果想要获取该信息,通常会将模型发布回控制器。

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

答案 1 :(得分:0)

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