我有一个名为TopPanel的PartialView。此面板负责显示在我的应用程序的任何页面上生成的错误消息。为了处理这个问题,当页面上发生任何异常时,我让它在TopPanel控制器中调用“ErrorHandler”动作。 ErrorHandler使用错误消息更新ViewBag并调用Index操作,该操作只返回局部视图(现在,因为我正在测试。我将稍后调用主控制器索引操作来显示整个页面)。我的理解是调用Index操作将重新加载视图,我在TopPanels PartilaView上的ErrorDiv将能够在ViewBag中显示新的错误消息。但是,什么都没有显示出来,我不知道为什么。
下载一些代码 -
ErrorHandler操作 -
public ActionResult ErrorHandler(string message)
{
ViewBag.ErrorMsg = message;
return RedirectToAction("Index");
}
我已经在调试器中检查过,“message”确实有一个有效值。并且ViewBag.ErrorMsg也会填充。
TopPanel的索引操作 -
public ActionResult Index()
{
return PartialView();
}
TopPanels PartialView包含此单独显示错误的内容 -
<div id="errorMsgBox">@ViewBag.ErrorMsg</div>
有谁可以指出问题是什么?
答案 0 :(得分:2)
由于您正在进行重定向,因此您实际上将最终处于完全独立的请求/响应中,该请求/响应不了解以前的ViewBag属性值。
答案 1 :(得分:2)
RedirectToAction就像浏览器重定向。它实际上将重定向代码发送到浏览器,操作名称是要请求的新URL。因此,您实际上是向服务器发送新请求以获取新页面,该页面将具有自己的ViewBag。
您可能只想返回视图并指定PartialView名称,而不是RedirectToAction。