Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ViewBag内容不可用于局部视图?_Asp.net Mvc 3_Razor_Viewbag - Fatal编程技术网

Asp.net mvc 3 ViewBag内容不可用于局部视图?

Asp.net mvc 3 ViewBag内容不可用于局部视图?,asp.net-mvc-3,razor,viewbag,Asp.net Mvc 3,Razor,Viewbag,我有一个叫托帕内尔的局部视图。此面板负责显示应用程序中任何页面上生成的错误消息。为了处理这个问题,当页面上发生任何异常时,我让它调用TopPanel控制器中的“ErrorHandler”操作。ErrorHandler使用错误消息更新ViewBag,并调用索引操作,该操作仅返回部分视图(目前,由于im测试,我将让它稍后调用主控制器索引操作以显示整个页面)。我的理解是,调用索引操作将重新加载视图,我在TopPanels PartialView上的ErrorDiv将能够在ViewBag中显示新的错误消

我有一个叫托帕内尔的局部视图。此面板负责显示应用程序中任何页面上生成的错误消息。为了处理这个问题,当页面上发生任何异常时,我让它调用TopPanel控制器中的“ErrorHandler”操作。ErrorHandler使用错误消息更新ViewBag,并调用索引操作,该操作仅返回部分视图(目前,由于im测试,我将让它稍后调用主控制器索引操作以显示整个页面)。我的理解是,调用索引操作将重新加载视图,我在TopPanels PartialView上的ErrorDiv将能够在ViewBag中显示新的错误消息。然而,什么也没有显示,我不知道为什么

这里有一些代码-

ErrorHandler操作-

public ActionResult ErrorHandler(string message)
{
        ViewBag.ErrorMsg = message;
        return RedirectToAction("Index");
}
我已经签入了调试器,“message”确实有一个有效值。并且ViewBag.ErrorMsg也会被填充

托帕内尔指数作用-

 public ActionResult Index()
 {           
        return PartialView();
 }
TopPanels PartialView包含此选项,用于显示错误-

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

有人能指出问题是什么吗?

由于您正在执行重定向,实际上您将在一个完全独立的请求/响应中结束,该请求/响应不知道以前的ViewBag属性值。

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


您可能只想返回视图并指定PartialView名称,而不是重定向到操作。

+1为我提供替代解决方案。然而,我有一个疑问。如果我只想加载TopPanel,返回TopPanel的PartialView就会显示这么多。有没有办法做到这一点?或者我必须重新加载整个页面(包含所有部分视图的父控制器?)您对部分、操作和重定向的理解是错误的。你应该通过某种形式的教程,因为在这里解释一切并不容易。此外,这不是处理MVC应用程序中错误的方法。