Asp.net mvc asp MVC4。在控制器中获取当前模型

Asp.net mvc asp MVC4。在控制器中获取当前模型,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,在我的操作中,我需要从数据库中删除一些行。但如果抛出异常,我需要返回当前模型的视图: [HttpGet] public ActionResult Delete(int id) { try { mDataMgr.DeleteUnit(id); } catch (DataManagerException ex) { if (ex.Error == DataM

在我的操作中,我需要从数据库中删除一些行。但如果抛出异常,我需要返回当前模型的视图:

[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");
    }

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

没有“当前模型”这样的东西。网页是“无状态的”。呈现页面后,有关该页面的所有信息(包括其模型)都将消失。如果他们想获得这些信息,通常会将模型发回控制器


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

或者,您可以从数据库中获取该模型并将其发送回?既然你有身份证,那你就可以做些什么了。或者更好的方法是让delete操作接受完整的模型。这样,如果delete失败,您就可以直接返回它,而不必从数据库获取数据?或者,如果删除失败,存储库中的删除方法应该发回完整的模型?所有这些都可以完成。

您的意思是希望从delte viewNo获得模型。若引发异常,我希望使用相同的模型渲染相同的视图。没有对数据库的查询,这是一个正确的答案。但是,如果您使用页面中的隐藏字段,请记住,如果这些字段被发回服务器,您仍然不能信任它们(即使它们不敏感)。我记得不久前Slahdot上的一个网站出现了一个问题,该网站将用户的信用卡号码(已授权)放在一个隐藏字段中。在这一点上,用户可以将卡号切换为任意号码,而服务器只是信任它。所以…总是检查你的输入!(@ YurimayoRoV)@ JASCAV-我认为这是敏感的。用户自己不能更改的任何内容都是敏感的。