Есть ли какие-то фильтры действий в вашем проекте, которые вы считаете необходимыми? - PullRequest
8 голосов
/ 15 августа 2010

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

Существуют ли какие-либо фильтры действий в вашем проекте, которые вы считаете необходимыми? Может быть, даже так важно, чтобы вы повторно использовали их во всех своих проектах MVC?

Ответы [ 6 ]

3 голосов
/ 15 августа 2010

Я использую Фильтр действий «Ведение журнала», чтобы регистрировать все вызовы на мои контроллеры с дампом параметров - это может быть очень полезно во время стороннего тестирования, позволяющего мне увидеть, как / почему / когда люди взаимодействуют с приложением.

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

2 голосов
/ 15 августа 2010

Неподдерживаемый фильтр браузера (UBF) - проверяет Request.Browser и перенаправляет на страницу загрузки браузера или облегченную страницу.

По умолчанию все наши контроллеры поддерживают только те браузеры, которые поддерживают jQuery. Но программист ван Марк контроллер со специальным атрибутом для переопределения UBF

Новые глобальные фильтры MVC3 делают использование UBF еще проще.

2 голосов
/ 15 августа 2010

фильтр проверки reCaptcha

Любой общедоступный веб-сайт, безусловно, нуждается в некоторой проверке с помощью капчи.Так почему бы не использовать тот, который очень силен и имеет очень хорошую цель. reCaptcha .

Интеграция с MVC довольно проста.

2 голосов
/ 15 августа 2010

Мой любимый фильтр "должен иметь", который я использую, это тот, который проверяет модель представления, чтобы увидеть, есть ли какие-либо нулевые списки. Если есть, он пытается заполнить их из базы данных. Я в основном использую это для заполнения общих раскрывающихся списков, поэтому мне не нужно помещать этот код в действие контроллера.

1 голос
/ 15 августа 2010

Фильтр проверки немодельного состояния

Это повседневный сценарий создания уникальных записей в БД. Предположим, у вас есть сущность User. У вас есть все возможные атрибуты проверки, но вы не можете добавить их. И это то, является ли экземпляр сущности уникальным.

Зачем он нам нужен?
Это два наиболее распространенных процесса с сущностью User, в которых используется проверка:

  1. Создание новых пользователей
  2. Обновление данных пользователя

Итак, когда вы создаете нового пользователя, вам, скорее всего, нужно проверить, является ли он уникальным в вашей БД (имя пользователя или адрес электронной почты или что-то подобное; что-то нужно проверить на уникальность).

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

Как мы решаем это?

Используя фильтр действия в действии Create. Но так как этот тип фильтра должен использоваться для всех типов объектов, целесообразно сделать его более универсальным и многократно используемым, поэтому мы можем использовать его для всех типов объектов.

Вот как я это сделал.

0 голосов
/ 15 августа 2010

У меня есть два, без которых я не могу жить:

a) AjaxMasterPageInjectorAttribute: работа этого маленького парня состоит в том, чтобы проверить, является ли запрос IsAjax (), а затем, при необходимости, переключиться на бесхромную AjaxMasterPage.Corolarry - это JsonCommandInterceptor - он принимает ответ и при необходимости заменяет его на команду Json для сценариев ajax.Позволяет создать единую цепочку действий, которая динамически превращается в ajaxy, если вам это необходимо.

b) ViewModelWrapperInjectorAttribute: захватывает модель представления и вставляет ее в более глобальный видовой объект ViewModelWrapper, охватывающий весь сайт.Сосредоточьте ваши действия на обработке того, что они должны, и избавит вас от необходимости заполнять / предоставлять указанный ViewModelWrapper в более инфраструктурное место.

...