2010-04-26 6 views
2

Я пытаюсь изменить метод OnAuthorization, так что он доступен для любого приложения ... таким образом:Как создать частичный класс контроллера для переопределения OnAuthorization?

public partial class Controller 
{ 
    protected override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if ((string)(filterContext.RouteData.Values["action"]) == "test") 
     { 
      filterContext.Result = new HttpUnauthorizedResult(); 
     } 
    } 

} 

но показывает ошибку компиляции:

Controller.OnAuthorization(System.Web.Mvc.AuthorizationContext)': no suitable method found to override

Может кто-то помочь меня?

ответ

1

Вы должны создать собственный базовый класс контроллера:

public partial class BaseController : Controller 
{ 
    protected override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if ((string)(filterContext.RouteData.Values["action"]) == "test") 
     { 
      filterContext.Result = new HttpUnauthorizedResult(); 
     } 
    } 
} 

Используйте BaseController в вашем коде.

И помните, что filterContext.RouteData.Values["action"] может быть Test или TEST или tEST.

Смежные вопросы