【问题标题】:MVC2: Best Way to Intercept ViewRequest and Alter ActionResultMVC2:拦截 ViewRequest 和更改 ActionResult 的最佳方法
【发布时间】:2010-03-19 06:13:35
【问题描述】:

我正在构建一个 ASP.NET MVC2 Web 应用程序,它需要一些复杂的身份验证和业务逻辑,而使用开箱即用的表单身份验证无法实现。

我是 MVC 的新手,所以请耐心等待......

我的计划是用一个或多个自定义属性(包含附加数据)标记所有受限的 View 方法。

然后控制器将重写 OnActionExecuting 方法来拦截请求、分析目标视图的属性并执行各种不同的操作,包括将用户重新路由到不同的位置。

我有拦截和属性分析工作,但重定向没有按预期工作。

我尝试将 ActionExecutingContext.Result 设置为 null,甚至尝试通过反射来后台处理控制器并调用它们的操作方法。没有骰子。

我能够以这种方式实现它......

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
     filterContext.HttpContext.Response.Redirect("/MyView", false);
     base.OnActionExecuting(filterContext);
}

这似乎是一个 hack,必须有更好的方法......

【问题讨论】:

    标签: c# asp.net asp.net-mvc-2


    【解决方案1】:

    首先,看看 Steve Sanderson 的 Pro ASP.Net MVC 书籍。关于 actionfilters 和控制器生命周期的部分对您很重要,主要是 b/c 有一些“常规”actionfilters 无法获得的 Authorize 过滤器的特殊处理。

    其次,你应该可以做到这一点:

    filterContext.Result = new RedirectToRouteResult(/*params*/);
    

    得到你想要的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-06
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      相关资源
      最近更新 更多