1
我有一個名爲BaseController
的控制器,它由所有其他控制器繼承。我有一個BaseController
的構造函數,我在這裏根據從會話中選擇的變量patId進行一些計算,並在此計算的基礎上允許用戶執行一些操作。將操作方法的參數存入控制器的構造函數
但是有一個控制器MyController
其操作首次將此變量從另一個應用程序模塊接收到此模塊中,所以直到此時它才被設置到會話中。
public ActionResult MyAction(string patId)
{
// First time patId is been set into session
}
因此,我的BaseController
計算出現此錯誤。有沒有一種方法可以將這個變量值寫入BaseController
的構造函數中。這樣我可以檢查會話值是否爲空,然後檢查此參數並設置會話。
請提出建議,如果我可以做到這一點,或者我可以從任何其他方式解決我的問題。
只用控制器構造函數是不可能的。難道你不能只檢查會話中的值是否可用,如果它不停止計算?另一種選擇是攔截所有傳入的請求,並在需要時從它們中獲取值,然後將其發送到控制器,請參閱[本主題](http://stackoverflow.com/q/11726848/728795)以獲取想法 – Andrei
謝謝@Andrei看起來這會有所幫助。我會嘗試選擇第二個選項,並會嘗試一下,如果這將有助於我 – prashant
@Andrei,如果我使用ActionFilter攔截請求,但控制器的構造函數將首先被調用,而不是FilterAttribute。 – prashant