我有一個ASP.NET MVC2應用程序,它使用父控制器來設置在應用程序周圍使用的特定變量。我還實現了驗證,以確保數據庫中存在URI中的ID。如果沒有,我重定向並停止腳本的執行。ASP.NET MVC2父控制器不重定向
我父控制器看起來是這樣的:
// Inside class declaration
// Set instance of account object to blank account
protected Account account = new Account();
protected override void Initialize(System.Web.Routing.RequestContext requestContext) {
// Call parent init method
base.init(requestContext);
// Check to make sure account id exists
if (accountRepos.DoesExistById(requestContext.RouteData.Values["aid"].ToString()) {
account = accountRepos.GetById(requestContext.RouteData.Values["aid"].ToString());
} else {
requestContext.HttpContext.Response.Redirect("url");
requestContext.HttpContext.Response.End();
}
}
起初,這個工作,但輸入了不正確的ID現在時,它不會重定向和使用賬戶類時拋出一個NullPointerException。我最初只是聲明帳戶變量而非實例化它,但也證明會拋出異常並且不會重定向。
我試圖結束腳本執行的原因是因爲我想確保即使重定向不起作用它也會停止。有點像在PHP中的header()之後調用exit():p。如果我做錯了,我會很感激任何指針。
我只是想知道如何解決這個問題。
任何幫助是極大的讚賞= d
+1有趣的解決方案;我正要推薦一個自定義的授權過濾器,但我更喜歡IRouteContraint – Tahbaza 2010-08-03 23:41:12
太棒了!我會試試這個。 – Swamp56 2010-08-04 00:01:51
我閱讀了IRouteConstraint接口並實現了自己的約束類,它工作正常! – Swamp56 2010-08-04 02:26:33