2

我的錯誤處理收集(一些手動,一些自動)控制器執行過程中產生的錯誤。然後我有一個局部視圖呈現錯誤消息。 我將錯誤消息存儲在ViewData中(如果我在RedirectResult中響應,則將它們傳輸到TempData)。處理MVC子操作錯誤

問題是:如果一個子操作導致錯誤,它將不會顯示,因爲它們(至少是頁面下方的那些)在部分視圖呈現後執行。

現在我唯一的,有點絕望的想法是將消息渲染到佈局頁面底部的javascript,並讓javascript更新錯誤顯示框。但它味道不好,我不應該需要客戶端代碼。

有沒有辦法讓一部分視圖「延遲渲染」,在其他一切之後?

回答

2

您可以嘗試使用Html.Action並將結果存儲在您的每個子操作的變量中。

當你完成後,你可以打電話給Html.RenderPartial你的「錯誤面板」。

@{ 
    var result = Html.Action("ChildAction"); 
} 

@Html.Partial("ErrorMessages") 

@result 

然後,通過放置變量而不是調用動作來恢復常規佈局。

+0

偉大的答案 - 這將真正幫助我們。 –