-1

I have a PartialView called TopPanel. This Panel is responsible for displaying error messages generated on any page in my application. To handle this, when any exception occurs on a page, I have it call an "ErrorHandler" action in the TopPanel controller. ErrorHandler updates the ViewBag with the error message and calls the Index action which just returns the partial view(for now, since im testing. I will have it call the Main Controllers Index Action later to display the whole page). My understanding is that calling the Index action will reload the view and the ErrorDiv that I have on TopPanels PartilaView will be able to display the new error message in ViewBag. However, nothing gets displayed and I'm not sure why.

Heres some code -

The ErrorHandler Action -

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

I've checked in the debugger, "message" does have a valid value. And ViewBag.ErrorMsg does get populated as well.

Index Action of TopPanel -

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

TopPanels PartialView contains this lone which displays the error -

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

Can anyone point out what the issue is?

4

2 に答える 2

2

リダイレクトを実行しているため、実際には、以前のViewBagプロパティ値を認識していない完全に別個の要求/応答になります。

于 2012-07-05T15:33:53.800 に答える
2

RedirectToAction はブラウザのリダイレクトに似ています。実際にブラウザにリダイレクト コードを送信し、アクション名は要求する新しい URL です。そのため、実際には、独自の ViewBag を持つ新しいページの新しい要求をサーバーに送信しています。

RedirectToAction の代わりに、View を返し、PartialView 名を指定することもできます。

于 2012-07-05T15:36:08.200 に答える