Можно ли применить ActionFilter в ASP.NET-MVC на КАЖДОМ действии

Вы можете использовать событие Callback onLeave (направление) FullPageJs:

...

onLeave: function(origin, destination, direction){
        var leavingSection = this;  
        if(origin.index == 1 && direction =="down"){
            alert("Going to section 3!");
        }
        else if(origin.index == 1 && direction == "up"){
            alert("Going to section 1!");
        }
    }

... CallBack

6
задан Simon_Weaver 16 March 2009 в 06:14
поделиться

2 ответа

Да, можно сделать это, но это не способ, которым это работает из поля. Я сделал следующее:

  1. Создайте основной класс контроллера и имейте все свои контроллеры, наследовались ему
  2. Создайте атрибут фильтра действия и имейте его, наследовались FilterAttribute и IActionFilter
  3. Украсьте свой основной класс контроллера Вашим новым атрибутом фильтра действия

Вот образец атрибута фильтра действия:

public class SetCultureAttribute : FilterAttribute, IActionFilter 
{ 
    #region IActionFilter implementation

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        //logic goes here
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //or logic goes here
    }

    #endregion IActionFilter implementation
}

Вот образец основного класса контроллера с этим атрибутом:

[SetCulture]
public class ControllerBase : Controller
{
    ...
}

Используя этот метод пока Ваши классы контроллера наследовался ControllerBase затем, фильтр действия SetCulture всегда выполнялся бы. У меня есть полный образец и сообщение на этом на моем блоге, если Вы хотели бы немного больше детали.

Надежда, которая помогает!

10
ответ дан 8 December 2019 в 16:10
поделиться

Вы не должны применять его к каждому действию, можно просто применить его к каждому контроллеру (т.е. поместить атрибут на класс, не метод).

Или, как Ian упомянул, можно выразиться на основном классе контроллера и затем расшириться от того контроллера.

0
ответ дан 8 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: