Учебники

MVC Framework — Фильтры действий

В ASP.NET MVC контроллеры определяют методы действия, и эти методы действия обычно имеют взаимно-однозначное отношение с элементами управления пользовательского интерфейса, такими как нажатие кнопки или ссылки и т. Д. Например, в одном из наших предыдущих примеров, UserController класс содержит методы UserAdd, UserDelete и т. д.

Однако много раз мы хотели бы выполнить какое-либо действие до или после определенной операции. Для достижения этой функциональности ASP.NET MVC предоставляет функцию добавления поведения до и после действия в методы действия контроллера.

Типы фильтров

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

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

  • Фильтры авторизацииФильтры авторизации используются для реализации аутентификации и авторизации для действий контроллера.

  • Фильтры результатовФильтры результатов содержат логику, которая выполняется до и после выполнения результата просмотра. Например, вы можете изменить результат просмотра непосредственно перед его отображением в браузере.

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

Фильтры действийФильтры действий используются для реализации логики, которая выполняется до и после выполнения действия контроллера. Мы подробно рассмотрим фильтры действий в этой главе.

Фильтры авторизацииФильтры авторизации используются для реализации аутентификации и авторизации для действий контроллера.

Фильтры результатовФильтры результатов содержат логику, которая выполняется до и после выполнения результата просмотра. Например, вы можете изменить результат просмотра непосредственно перед его отображением в браузере.

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

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

Фильтры действий

Фильтры действий — это дополнительные атрибуты, которые можно применять либо к разделу контроллера, либо ко всему контроллеру, чтобы изменить способ выполнения действия. Эти атрибуты являются специальными классами .NET, производными от System.Attribute, которые могут быть присоединены к классам, методам, свойствам и полям.

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

  • Выходной кэш — этот фильтр действий кэширует выходные данные действия контроллера в течение указанного промежутка времени.

  • Обрабатывать ошибки — этот фильтр действий обрабатывает ошибки, возникающие при выполнении действия контроллера.

  • Авторизовать — этот фильтр действий позволяет вам ограничить доступ к определенному пользователю или роли.

Выходной кэш — этот фильтр действий кэширует выходные данные действия контроллера в течение указанного промежутка времени.

Обрабатывать ошибки — этот фильтр действий обрабатывает ошибки, возникающие при выполнении действия контроллера.

Авторизовать — этот фильтр действий позволяет вам ограничить доступ к определенному пользователю или роли.

Теперь мы увидим пример кода для применения этих фильтров на примере контроллера ActionFilterDemoController. (ActionFilterDemoController используется только в качестве примера. Вы можете использовать эти фильтры на любом из ваших контроллеров.)

Кэш вывода

Пример — указывает возвращаемое значение для кэширования в течение 10 секунд.

public class ActionFilterDemoController : Controller { 
   [HttpGet] 
   OutputCache(Duration = 10)] 
   
   public string Index() { 
      return DateTime.Now.ToString("T");  
   } 
}

Обработка ошибки

Пример — Перенаправляет приложение на пользовательскую страницу ошибки, когда ошибка запускается контроллером.

[HandleError] 
public class ActionFilterDemoController : Controller { 
   
   public ActionResult Index() { 
      throw new NullReferenceException(); 
   }  
   
   public ActionResult About() { 
      return View(); 
   } 
} 

С помощью приведенного выше кода, если во время выполнения действия произойдет какая-либо ошибка, он найдет представление с именем Error в папке Views и отобразит эту страницу пользователю.

санкционировать

Пример — разрешение только авторизованным пользователям войти в приложение.

public class ActionFilterDemoController: Controller { 
   [Authorize] 
   
   public ActionResult Index() { 
      ViewBag.Message = "This can be viewed only by authenticated users only"; 
      return View(); 
   }  
   
   [Authorize(Roles="admin")] 
   public ActionResult AdminIndex() { 
      ViewBag.Message = "This can be viewed only by users in Admin role only"; 
      return View(); 
   } 
}

С помощью приведенного выше кода, если вы попытаетесь получить доступ к приложению без входа в систему, оно выдаст ошибку, аналогичную той, которая показана на следующем снимке экрана.