1
我們的Orchard應用程序顯示兩個添加到通知服務的通知。到目前爲止,我們已經追蹤了這個問題,並且知道是什麼造成了這個問題,但是正在尋找一個明顯的解決方案,因爲我現在要詳細說明。Orchard CMS:調用兩個操作會導致重複通知
所以我們使用了許多主題來呈現我們的基於Orchard的應用程序。在我們的佈局,我們有一個剃刀調用繪製,顯示了一組有關已登錄用戶的標題欄。
@Html.Action("OutOfGameHeader", "Options", new { area = "Area.area.Location.Common" })
此操作調用Orchard.UI.Notify的OnResultExecuting()方法。 NotifyFilter(其中包括)用當前通知組填充Messages區域。當我們將調用渲染爲消息區域時,同樣的方法再次運行,並且通知再次添加到區域的形狀,導致實際繪製區域時顯示重複的通知。
誰能想到,符合以下條件的解決方案:
- 繪製頭無需調用@ Html.Action(),以避免OnResultExecuting()被觸發第一次。
- 如果不在新區域中創建新的Widget,因爲這將涉及到我們改變幾十個現有主題的清單以包含它。
我們還發現這只是在通知添加到區域的代碼點之下,所以如果有人知道更多關於它的信息,那也是有幫助的。
//todo: (heskew) probably need to keep duplicate messages from being pushed into the zone like the previous behavior
//baseViewModel.Messages = baseViewModel.Messages == null ? messageEntries .Messages.Union(messageEntries).ToList();
//baseViewModel.Zones.AddRenderPartial("content:before", "Messages", baseViewModel.Messages);
任何想法非常感謝。
+1 Html.Action和Html.RenderAction是邪惡的:)正如Bertrand所寫,這清楚地表明你的代碼需要重構,因爲你的控制器中有太多的邏輯。 –