如何从基本控制器重定向到特定 URL

本文关键字:URL 重定向 控制器 | 更新日期: 2023-09-27 18:35:19

我有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);
       }
    }
}

但是代码行1,2...N即使在BaseController中执行"Redirect(myurl)"后也会在HomeController中执行

我想要的是它应该重定向到其他一些URL(而不是任何其他操作),而无需执行CodeLin1,2...N

如何从基本控制器重定向到特定 URL

我会实现一个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
}

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

class BaseController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext context)
    {
        if (somethingWrong)
        {
            context.Result = GetSomeUnhappyResult();
        }
    }
}