В MVC3, как я могу переопределить TempDataProvider глобально?


Я хотел бы изменить TempDataProvider в ASP.NET применение MVC3... Я знаю, что могу сделать это на каждом контроллере, переопределив CreateTempDataProvider... но мне было интересно, есть ли способ сделать это в 1 месте ("Global.асакс?") для всех контроллеров.

Причина в том, что мой сайт находится на облачном сервере... и я хочу реализовать шаблон Post-Redirect-Get в некоторых случаях, но я не хочу, чтобы пользователь был отправлен на другой сервер и никогда не получал его сообщение.

1 2

1 ответ:

Кажется, вы могли бы написать свой собственный ControllerFactory. Здесь вы можете затем, после извлечения контроллера из базового класса DefaultControllerFactory, установить TempDataProvider для своей реализации. Смотрите подробнее здесь.
Это, вероятно, делает то, что вам нужно, но лично я предпочел бы больше, чем следующий подход:

Я считаю хорошей практикой, чтобы все ваши контроллеры наследовались от некоторого "базового" контроллера класса. Общая логика контроллера (например, переопределение CreateTempDataProvider может быть выполнено в 1 место.