本文介绍了我该如何重定向用户从一个ASP.MVC 3动作过滤器的另一个控制器动作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在构建定制ASP.MVC 3动作过滤器,我应该如何将用户重定向到另一个动作,如果我的测试失败?我想沿着原来的动作过关,使用户输入了这个遗漏preference后,我可以回重定向到原来的页面。

In building a custom ASP.MVC 3 Action Filter, how should I redirect the user to another action if my test fails? I would like to pass along the original Action so that I can redirect back to the original page after the user enters the missing preference.

在控制器:

[FooRequired]
public ActionResult Index()
{
    // do something that requires foo
}

在自定义过滤器类:

in a custom filter class:

// 1. Do I need to inherit ActionFilterAttribute or implement IActionFilter?
public class FooRequired : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (TestForFoo() == false)
        {
            // 2. How do I get the current called action?

            // 3. How do I redirect to a different action,
            // and pass along current action so that I can
            // redirect back here afterwards?
        }

        // 4. Do I need to call this? (I saw this part in an example)
        base.OnActionExecuting(filterContext);            
    }
}

我在寻找一个简单的ASP.MVC三滤的例子。到目前为止,我已经搜索导致Ruby on Rails的例子或ASP.MVC过滤器示例复杂得多比我更需要。我道歉,如果这已经被问过。

推荐答案

您可以设置 filterContext.Result RedirectToRouteResult

filterContext.Result = new RedirectToRouteResult(...);

这篇关于我该如何重定向用户从一个ASP.MVC 3动作过滤器的另一个控制器动作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-15 17:48