Mvc viewpages и пользовательские данные для всех страниц
Мне нужно, чтобы некоторые данные были доступны на всех страницах сайта. Данные поступают из параметра, предоставленного для всех маршрутов, я хочу получить этот параметр и получить соответствующие данные для него и сделать его доступным для всех представлений (включая главные страницы).
Было бы неплохо, если бы это можно было сделать в одном месте.
Что мне нужно сделать, чтобы получить эту функциональность, можно ли это сделать?
Привет, Ричард.
1 ответ
Самым простым (возможно, не самым лучшим) будет написать базовый класс Controller, который
1) обрабатывает одно из следующих событий для выполнения работы:
- OnActionExecuted
- OnActionExecuting
- OnResultExecuted
- OnResultExecuting
2) Устанавливает данные, которые вы хотите иметь доступными в ViewData.
3) Используйте ViewData из ваших представлений.
4) Все ваши контроллеры должны наследоваться от вашего собственного базового контроллера.
Возможно, это не самый лучший из всех подходов, поскольку я обычно стараюсь избегать наследования, такого как чума, но это сработает. Другие опции.
1) Реализуйте его в ActionFilter и убедитесь, что добавили атрибут ко всем ActionMethods.
2) Используйте что-то вроде MVC Turbine для определения ActionFilter'ов, которые срабатывают для всех ActionMethods в вашем приложении ASP.NET MVC.