2013-10-14 123 views
0

我有一個HomeController和一個BaseController和一個BaseController中的方法,我需要重定向到一個特定的URL。如何從基礎控制器重定向到特定的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); 
     } 
    } 
} 

但codeline1,2 ... N獲取的HomeController即使執行之後執行「重定向(myurl) 「在基本控制器

我想要的是,它應該重定向到一些其他的URL(而不是任何其他行動),而不執行CodeLin1,2 ... N

回答

4

我會實現一個ActionFilterAttribute

參見: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

您可以驗證的東西在控制器的虛擬方法OnActionExecuting

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