2011-06-08 84 views
2

我知道控制器應該處理每個操作,但是如何預處理asp.net.net mvc中的某些請求?例如,在我的所有控制器中都需要很多東西。在每個控制器中對此進行編碼並不完全正確,因此我需要將一些數據保存在http上下文會話中,以便我可以在每個控制器中訪問它。ASP .net MVC創建控制器之前的預處理請求

如果我將對象存儲在會話中,我還需要以某種方式正確處理或稍後在httpcontext會話中使用某些對象?就我而言,我使用nhibernate將我的對象映射到數據庫,並且我正在考慮創建一個池來存儲我的ISession實例,會話或與數據庫的連接,並根據需要使其可用。我不知道這是否可以,但這是我想出的最好主意,而不是每次創建這些ISession。

我對此很新,所以我可能會使用很多這些不太好的東西。

回答

0

覆蓋MvcHandler類並在那裏實現您的邏輯。然後覆蓋MvcRouteHandler以提供您的自定義IHttpHandler實現,而不是默認的MvcHandler。如果您查看這些類的來源並準確理解接收請求和執行控制器的ASP.NET之間發生了什麼,這將更容易完成。

另一種選擇是創建一個BaseController,它可以處理所有的預處理,並從基礎控制器派生解決方案中的任何控制器。這會起作用,但它似乎不適合你作爲我所建議的第一個解決方案的目標。

+0

謝謝,但我在哪裏可以得到源代碼? – Alecu 2011-06-08 16:55:07

+0

@Alecu,http://aspnet.codeplex.com/releases/view/58781 – smartcaveman 2011-06-08 19:30:39

+0

謝謝,我知道它工作得很好。我也改變了我的方法,並創建了一個會話池來管理數據庫,因爲只存儲在httpcontext.session中並不好。 – Alecu 2011-06-10 12:12:10