Asp.net mvc 如何在不触发新请求的情况下从基本控制器中执行的OnAction重定向?

Asp.net mvc 如何在不触发新请求的情况下从基本控制器中执行的OnAction重定向?,asp.net-mvc,onactionexecuting,Asp.net Mvc,Onactionexecuting,这里已经提出了这个问题: 但我不喜欢的是,在接受的答案中,它触发了一个新的请求,这意味着我再次运行基本控制器的逻辑。因此,我想知道是否有一种方法可以在基本控制器中拦截请求,并根据某些条件更改正在执行的控制器/操作,而不会导致重定向,基本上不会通过完整的请求管道?我希望基础控制器确定应用程序是否正确设置,如果没有,则将控制转移到SetupController的索引操作,而不触发整个新请求?我记得很久以前我在web表单中使用了服务器转移,也许这能帮到你@佩德罗:这对我来说很有效,我只看到一个问题。

这里已经提出了这个问题:


但我不喜欢的是,在接受的答案中,它触发了一个新的请求,这意味着我再次运行基本控制器的逻辑。因此,我想知道是否有一种方法可以在基本控制器中拦截请求,并根据某些条件更改正在执行的控制器/操作,而不会导致重定向,基本上不会通过完整的请求管道?我希望基础控制器确定应用程序是否正确设置,如果没有,则将控制转移到SetupController的索引操作,而不触发整个新请求?

我记得很久以前我在web表单中使用了服务器转移,也许这能帮到你@佩德罗:这对我来说很有效,我只看到一个问题。执行服务器传输后,浏览器URL地址保持不变。有没有办法将URL更改为与传输地址匹配的位置?这是缺点之一(取决于观点),我认为这是可能的,但您需要破解URL路由(如果在该上下文下可用),我记得您可以获取“原始”URL我记得很久以前我在web表单中使用了服务器传输,也许这对您有所帮助@佩德罗:这对我来说很有效,我只看到一个问题。执行服务器传输后,浏览器URL地址保持不变。有没有办法将URL更改为与传输地址匹配的位置?这是缺点之一(取决于观点),我认为这是可能的,但您需要破解URL路由(如果在该上下文下可用),我记得您可以获取“原始”URLurl via rawUrl不鼓励只回答代码片段。。同时提供一些代码描述,不鼓励只回答代码片段。。提供一些描述和代码
   filterContext.Result = new RedirectResult(url);
   return;