Чтобы прочитать статью на английском языке, установите флажок Английский. Вы также можете просматривать текст на английском языке во всплывающем окне, наводя указатель мыши на текст.
Перевод
Английский

Фильтрация действий в приложениях ASP.NET MVC

Visual Studio 2010

В платформе ASP.NET MVC контроллеры определяют методы действий, которые обычно имеют однозначное соответствие возможным действиям пользователя, например щелчку ссылки или отправке формы. Например, если пользователь щелкает ссылку, то запрос отправляется указанному контроллеру и вызывается соответствующий метод действия.

Иногда логика должна выполняться до вызова метода действия или после его выполнения. Для этого ASP.NET MVC предоставляет фильтры действий. Фильтры действий представляют собой пользовательские атрибуты, позволяющие декларативным образом добавлять поведение до и после действия в методы действий контроллера.

ASP.NET MVC предоставляет следующие типы фильтров действий.

  • Фильтр проверки подлинности, определяющий необходимость выполнения метода действия (например, выполнение проверки подлинности или проверки свойств запроса) с точки зрения безопасности. Класс AuthorizeAttribute является примером фильтра проверки подлинности.

  • Фильтр действий, который содержит в себе выполнение метода действия. Этот фильтр может выполнять дополнительную обработку, например предоставлять методу дополнительные данные, оценивать возвращенное значение или отменять выполнение метода.

  • Фильтр результатов, который является оболочкой для исполнения объекта ActionResult. Этот фильтр может выполнять дополнительную обработку результата, например изменять ответ HTTP. Класс OutputCacheAttribute является примером фильтра результатов.

  • Фильтр исключений, который выполняется при наличии необработанного исключения в методе, начиная с фильтров проверки подлинности и заканчивая выполнением результата. Фильтры исключений можно использовать для ведения журнала или для отображения страниц об ошибках. Класс HandleErrorAttribute является примером фильтра исключений.

Фильтр действий обычно является атрибутом, который реализует абстрактный класс FilterAttribute. Некоторые фильтры действий (например, AuthorizeAttribute и HandleErrorAttribute) реализуют класс FilterAttribute напрямую. Эти фильтры всегда вызываются до выполнения метода действия.

Другие фильтры (например, OutputCacheAttribute) реализуют абстрактный класс ActionFilterAttribute, который разрешает запуск фильтра действий до или после выполнения метода действия.

Атрибут фильтра действий можно использовать для пометки любого метода действия или контроллера. Если атрибут находится в контроллере, то фильтр действий применяется ко всем методам действий этого контроллера.

В следующем примере показана реализация класса HomeController по умолчанию. В этом примере атрибут HandleError используется для отметки контроллера. Таким образом, фильтр применяется к обоим методам действий контроллера.


[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}


Заголовок

Описание

AuthorizeAttribute

Описание использования атрибута Authorize для управления доступом к методу действий.

OutputCacheAttribute

Описание использования атрибута OutputCache для кэширования вывода в методе действий.

HandleErrorAttribute

Описание использования атрибута HandleError для обработки исключений, создаваемых методом действия.

Создание настраиваемых фильтров действий

Описание процесса реализации пользовательских фильтров действий.

Практическое руководство. Создание пользовательского фильтра действий

Описание процесса добавления пользовательского фильтра действий в приложение MVC.

Показ: