Я хотел бы услышать ваши мнения и, возможно, лучше предложения по следующему сценарию:ASP.NET MVC, ActionFilters, статические классы и передачи данных по всему
У меня есть определить пользовательский ActionFilter что делает какую-то работу и выходит с некоторым значением. Я хотел бы использовать это значение в действиях контроллера и в моделях.
Теперь я мог бы использовать TempData для передачи этого значения из ActionFilter в любой метод действия контроллера, а затем распространить это значение на все модели, которые передаются возвращенным представлениям.
Я уверен, что это сработает, но этот TempData будет присутствовать на сессии, где и когда никто на самом деле этого не нуждается. Значение должно использоваться исключительно в коде во время одного запроса, после чего оно эффективно аннулирует.
я придумал два варианта:
В ActionFilter я установить это значение в TempData в OnActioExecuting(), и я удалить его в OnActionExecuted(). Правильно ли я понимаю, что к моменту вызова OnActionExecuted действие контроллера завершено, ответ уже сгенерирован, и этот контент TempData не прошел путь к сеансу YET?
В любом из моих собственных статических классов (логика) я просто определяю публичное свойство для этого значения, и я использую его, когда это необходимо. Не потеряется ли это статическое поле между OnActionExecuting() и фактическим выполнением метода контроллера? Существуют ли какие-либо другие проблемы с возможностью потери этого значения во время обработки запроса на сервере?
Есть ли другие/лучшие варианты, которые я еще не рассмотрел?
Довольно интересно на самом деле. Разве это так, что параметры конструктора действий будут автоматически сопоставлены с клавишами коллекции ActionParameters? – User
Да, параметры действия должны быть предпочтительным способом передачи значения в контроллере. – kazimanzurrashid
В конечном счете мне понравился этот подход, хотя он определенно отрицает принцип DRY. Спасибо за совет. – User