我有一个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