2013-12-02 2 views
1

У меня есть два атрибута фильтра действий в моем приложении MVC, где я выполняю некоторую работу в событии OnActionExecuting. И в зависимости от определенного условия в первом, мне нужно выполнить тот же блок кода, что и второй. Поэтому я решил повторно использовать код.Перенаправление из одного атрибута фильтра действий из другого

Мой первый вопрос, могу ли я это сделать? тогда как.

Во-вторых, это хороший подход?

UPDATE:

public class Primary : ActionFilterAttribute{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext){ 
     if(there is no cookie){ 
      // Code 
     } 
     else{ 
      // Execute the same code block as Secondary OnActionExecuting 
     } 
    } 
} 

public class Secondary : ActionFilterAttribute{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext){ 
     // Access cookie and do other work 
    } 
} 

[Primary] 
public ActionResult MyPrimaryAction(Guid id){ 
    // Do work 
} 

[Secondary] 
public ActionResult MySecondaryAction(Guid id){ 
    // Do work 
} 

Спасибо.

+0

Не могли бы вы разместить образец кода, что вы сделали? Потому что это неясно. –

+0

@Thomas Спасибо, что ответили. Обновлен блоком кода. – sovan

ответ

0

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

public class BaseCookieAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext){ 
     // Access cookie and do other work 
    } 
} 

Затем обновить вас два класса атрибута:

public class Primary : BaseCookieAttribute { 
    public override void OnActionExecuting(ActionExecutingContext filterContext){ 
     if(there is no cookie){ 
      // Code 
     } 
     else{ 
      base.OnActionExecuting(filterContext); 
     } 
    } 
} 

Тогда вам не нужен ваш вторичный атрибут, потому что вы можете использовать непосредственно BaseCookieAttribute на ваши действия метод.

+0

Спасибо Томас .. :) – sovan

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