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.

Другие вопросы по тегам