我很想聽聽你對以下情形的意見,也許更好的建議:ASP.NET MVC,ActionFilters,靜態類和傳遞數據周圍
我有自定義一個ActionFilter,做了一些工作,出來具有一定的價值。我想在控制器動作和模型中使用該值。
現在,我可以使用TempData將此值從ActionFilter傳遞給任何控制器操作方法,然後將此值分配給傳遞給返回視圖的所有模型。
我確定它會工作,但是這個TempData將會在那裏,當沒有人真的需要它時。該值應該在單個請求的時間內在代碼中專門使用,在此之後,該值有效地失效。
我想出了兩個選項:
在ActionFilter,我在OnActioExecuting()中的TempData設置這個值,我刪除它OnActionExecuted()。我是否正確理解,在調用OnActionExecuted時,控制器操作已完成,響應是否已生成,並且此TempData內容尚未進入會話YET?
在我的任何自定義靜態類(邏輯)中,我只是爲這個值定義一個公共屬性,並在需要時使用它。在OnActionExecuting()和實際執行控制器方法之間,這個靜態字段不會丟失嗎?在服務器的請求處理過程中是否還有其他可能會丟失該值的問題?
我還沒有考慮過其他/更好的選擇嗎?
其實很有趣。它是否會使動作構造函數參數自動映射到ActionParameters集合鍵? – User 2009-05-03 20:02:09
是的操作參數應該是在控制器中傳遞值的首選方式。 – kazimanzurrashid 2009-05-03 20:41:46