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-我认为这是敏感的。用户自己不能更改的任何内容都是敏感的。