2016-06-23 2 views
0

Как запустить метод ActionFilterAttribute перед тем контроллером ActionFilterAttributeМетод ActionFilterAttribute перед тем контроллером ActionFilterAttribute

Пример:

[Transaction(Order = 20)] 
public class BaseController : Controller 
    { 
... 
} 

public class Test{} : BaseController { 

[HttpPost] 
     [WorkReportAccountsSettlementCreatedByCompanyDomainEvent] 
     public virtual JsonResult Create(CreateStudentsWorkReportsListOverviewFormModel model) 
     { 
... 
} 

} 

Проблема заключается в том, что TransactionAttribute всегда выполняется перед WorkReportAccountsSettlementCreatedByCompanyDomainEventAttribute

Почему? Я хочу oposite ...

ответ

1

Почему TransactionAttribute выполнен до WorkReportAccountsSettlementCreatedByCompanyDomainEventAttribute, так как первый имеет нижний порядок. Вы можете посмотреть MSDN page, где описано все фильтры.

Если вы посмотрите на FilterScope перечислимого вы увидите следующее:

public enum FilterScope 
{ 
    First = 0, 
    Global = 10, 
    Controller = 20, 
    Action = 30, 
    Last = 100, 
} 

Это означает, что даже если вы установите Order = 20 он все еще будет выполняться раньше, потому что Action = 30.

+0

Теперь я установил [Транзакция (Заказ = 80)], но все еще выполняется до WorkReportAccountsSettlementCreatedByCompanyDomainEvent. Действие равно 30, поэтому должно быть WorkReportAccountsSettlementCreatedByCompanyDomainEvent раньше, но не – mbrc

+0

Попробуйте указать '[WorkReportAccountsSettlementCreatedByCompanyDomainEventAttribute (Order = 81)]'. – MaKCbIMKo

+0

Я пробовал, но то же самое. TransactionAttribute все еще выполняется ПЕРЕД РАБОЧЕЙ РЕКОРДАТКОЙСЕТИРОВАНИЕCreatedByCompanyDomainEventAttribute У меня больше нет идей :( – mbrc