如何从基本控制器重定向到特定 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
我会实现一个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();
}
}
}