我有一个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中执行
我想要的是它应该重定向到其他URL(而不是任何其他动作)而不执行CodeLin1,2 ... N
答案 0 :(得分:4)
请参阅:Redirect From Action Filter Attribute
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
}
答案 1 :(得分:1)
您可以在控制器的虚拟方法OnActionExecuting
中验证某些内容:
class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext context)
{
if (somethingWrong)
{
context.Result = GetSomeUnhappyResult();
}
}
}