1

特定の URL にリダイレクトする必要がある場所から、HomeController と BaseController と BaseController のメソッドがあります。

コードは次のとおりです。

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

しかし、Codeline1,2...N は、BaseController で「Redirect(myurl)」を実行した後でも、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 に答える