2010-09-07 32 views
2

我遇到了一個場景,我的控制器上有一些初始化代碼,可能會識別出需要某些用戶交互的無效狀態。從Initialize()中取消控制器動作

因爲,如果發生這種情況,我想將客戶重定向到其他頁面/操作。由於我不希望最初的操作在我遇到這種無效狀態時運行,我想要取消包括操作在內的整個請求。

這可能嗎?我們發現解決這個問題的一種方法是使用一個從Context.Items中讀出的過濾器,它是否應該取消這個動作,但是還有另一種更簡單的方法嗎?

回答

2

我開始讀這篇文章,立即想到「上下文和過濾器」 :-)

我認爲這是做...認爲乾淨的方法,你也可以做

其中internally throws a ThreadAbortException所以它跳過所有其他代碼。

+0

我實際上在做一個Response.Redirect(這是我所假設的IResponseAdapter),你是說隱含地中止線程嗎?請問這也繞過Controller.Dispose(),這對我來說是一件壞事... – jishi 2010-09-07 14:56:40

+0

@jishi:IIRC Monorail的Response.Redirect只記錄重定向並設置一個標誌,實際上處理管道末尾的重定向,而「真正的」HttpContext Response.Redirect拋出並不執行任何其他代碼。 – 2010-09-07 16:13:43

+0

@jishi:關於Controller.Dispose(),試試看,並讓我知道:) – 2010-09-07 16:14:09

相關問題