-1

我有一个名为 TopPanel 的 PartialView。该面板负责显示在我的应用程序的任何页面上生成的错误消息。为了处理这个问题,当页面上发生任何异常时,我让它在 TopPanel 控制器中调用“ErrorHandler”操作。ErrorHandler 使用错误消息更新 ViewBag 并调用仅返回部分视图的 Index 操作(现在,因为我正在测试。稍后我将让它调用 Main Controllers Index Action 以显示整个页面)。我的理解是调用 Index 操作将重新加载视图,并且我在 TopPanels PartilaView 上的 ErrorDiv 将能够在 ViewBag 中显示新的错误消息。但是,什么都没有显示,我不知道为什么。

这是一些代码 -

ErrorHandler 动作 -

public ActionResult ErrorHandler(string message)
{
        ViewBag.ErrorMsg = message;
        return RedirectToAction("Index");
}

我已经检查了调试器,“消息”确实有一个有效值。ViewBag.ErrorMsg 也确实被填充了。

TopPanel 的索引操作 -

 public ActionResult Index()
 {           
        return PartialView();
 }

TopPanels PartialView 包含这个单独的显示错误 -

<div id="errorMsgBox">@ViewBag.ErrorMsg</div>

谁能指出问题是什么?

4

2 回答 2

2

由于您正在执行重定向,因此您实际上最终会得到一个完全独立的请求/响应,它不知道先前的 ViewBag 属性值。

于 2012-07-05T15:33:53.800 回答
2

RedirectToAction 类似于浏览器重定向。它实际上将重定向代码发送到浏览器,并且操作名称是要请求的新 URL。因此,您实际上是在向服务器发送一个新请求以获取一个新页面,该页面将具有自己的 ViewBag。

您可能只想返回 View 并指定 PartialView 名称,而不是 RedirectToAction。

于 2012-07-05T15:36:08.200 回答