2012-07-05 45 views
-1

我有一個名爲TopPanel的PartialView。此面板負責顯示我的應用程序中任何頁面上生成的錯誤消息。爲了解決這個問題,當頁面發生任何異常時,我會在TopPanel控制器中調用「ErrorHandler」動作。的ErrorHandler更新ViewBag與錯誤信息,並調用Index操作剛剛返回的局部視圖(現在,因爲即時通訊的測試。我一定要有再打主控制器index動作來顯示整個頁面)。我的理解是,調用Index操作將重新加載視圖和我在TopPanels PartilaView上的ErrorDiv將能夠在ViewBag中顯示新的錯誤消息。但是,沒有任何顯示,我不知道爲什麼。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> 

任何人都可以指出的問題是什麼?

回答

2

RedirectToAction就像一個瀏覽器重定向。它實際上將重定向代碼發送到瀏覽器,並且操作名稱是要請求的新URL。因此,您實際上正在向服務器發送一個新請求,以創建一個新頁面,該頁面將擁有自己的ViewBag。

相反RedirectToAction,你可能只是想返回查看,並指定PartialView名。

+0

+1給我的替代解決方案。但是,我懷疑。如果我只想加載TopPanel,返回TopPanel的PartialView就會顯示那麼多。有沒有辦法做到這一點?或者是否必須重新加載整個頁面(具有所有部分視圖的父控制器?) – neuDev33 2012-07-05 16:49:25

+0

您對部分,動作和重定向的理解是錯誤的。你應該通過某種教程,因爲在這裏解釋一切並不容易。這也不是在MVC應用程序中處理錯誤的方法。 – mare 2012-07-05 19:46:32

2

既然你正在做一個重定向,您實際上是要在一個完全獨立的請求/響應它沒有以前ViewBag屬性值的知識來結束。

相關問題