1

我有 HomeController 和 BaseController 以及 BaseController 中的方法,我需要从中重定向到特定的 URL。

这是代码: -

public class HomeController : BaseController
{
    public ActionResult Index()
    {
       VerfiySomething();

       CodeLine1.....
       CodeLine2.....
       CodeLineN.....
    }
}

这是基本控制器 -

public class BaseController : Controller
{
    public void VerfiySomething()
    {
       if(based_on_some_check)
       {
           Redirect(myurl);
       }
    }
}

但是即使在 BaseController 中执行“Redirect(myurl)”之后,codeline1,2...N 也会在 HomeController 中执行

我想要的是它应该在不执行 CodeLin1,2...N 的情况下重定向到其他 URL(而不是任何其他操作)

4

2 回答 2

5

我会实施一个ActionFilterAttribute.

请参阅:从操作过滤器属性重定向

public class VerifySomethingAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (based_on_some_check)
        {
            filterContext.Result = new RedirectResult(url);
        }

        base.OnActionExecuting(filterContext);
    }
}

用法:

[VerifySomething]
public ActionResult Index()
{
    // Logic
}
于 2013-10-14T11:57:31.853 回答
1

您可以验证控制器的虚拟方法中的某些内容OnActionExecuting

class BaseController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext context)
    {
        if (somethingWrong)
        {
            context.Result = GetSomeUnhappyResult();
        }
    }
}
于 2013-10-14T11:52:27.123 回答