2013-03-20 23 views
1


我有以下情形。
我在控制器中設置了INotifier通知,然後我重定向到其他操作。在我重定向的視圖中,我有一些Html.RenderAction助手。 每次當動作被渲染火災NotifyFilter.OnResultExecuting(ResultExecutingContext filterContext)和每一個方法調用設置爲tempData[TempDataMessages](發送通知消息由NotifyFilter.OnActionExecuted(ActionExecutedContext filterContext)保存消息的時間增加了新的消息輸入如何使用RenderAction防止多個通知呈現在視圖上

我的控制器:

[HttpPost, ActionName("SomeAction")] 
public ActionResult SomeActionPost() 
{ 
    _notifier.Information(T("Important information")); 
    return RedirectToAction("OtherAction", "MyController"); 
} 

public ActionResult OtherAction() 
{ 
    return View(); 
} 

和視圖:

<div> 
@{ Html.RenderAction("ActionOne", "MyController");} 
@{ Html.RenderAction("ActionTwo", "MyController");} 
</div> 

所以通知是由ActionResult ActionTwo通過ActionResult ActionOne和三倍一次(一次通過ActionResult OtherAction一次。
任何人都知道如何防止額外的通知?

回答

0

我看不到這樣做的簡單方法。您可以嘗試添加您自己的操作過濾器,並在某個時間點清除TempData["messages"]值,或者在父視圖中執行此操作。儘管這兩種解決方案都是解決方法,同樣也很麻煩。

btw - Html.RenderAction應謹慎使用。 不要使用它,除非你完全確定什麼是暗示。它使得多個操作在一個請求中被處理。這非常緩慢,遲早會讓你陷入問題(比如你寫的那個問題)。大多數代碼假設在請求期間觸發了一個動作。

如果你可以處理沒有它的東西(在大多數情況下是可能的),那就去做吧。