2010-05-25 3 views
1

Мне нужно, чтобы некоторые данные были доступны на всех страницах просмотра на веб-сайте. Данные поступают из параметра, предоставленного ко всем маршрутам, я хочу получить этот параметр и получить соответствующие данные для него и сделать его доступным для всех просмотров (включая основные страницы).Mvc viewpages и пользовательские данные для всех страниц

Было бы здорово, если бы это можно было сделать в одном месте.

Что мне нужно сделать, чтобы получить эту функциональность, можно ли это сделать?

Greetz, Richard.

ответ

0

Самый простой (не может быть в лучшем случае) должен был бы написать базовый класс контроллера, который

1) обрабатывает одно из следующих событий, чтобы сделать работу:

  • OnActionExecuted
  • OnActionExecuting
  • OnResultExecuted
  • OnResultExecuting

2) Устанавливает данные, которые вы хотите получить в ViewData.

3) Используйте ViewData из своих представлений.

4) Все ваши контроллеры должны наследовать от вашего пользовательского базового контроллера.

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

1) Внедрите его в ActionFilter и убедитесь, что добавьте атрибут ко всем ActionMethods.

2) Используйте что-то вроде MVC Turbine для определения ActionFilter этого триггера для всех ActionMethods в вашем приложении ASP.NET MVC.

+0

Спасибо, проблема с viewdata заключается в том, что он не набирается, поэтому я должен использовать его каждый раз, когда мне нужны данные. Есть ли решение для этого? – Richard

+0

Проект MVCContrib может помочь, поскольку они написали набор расширений, которые позволяют вам извлекать данные из ViewData (IDictionary ) строго типизированным способом. http://mvccontrib.codeplex.com/documentation?referringTitle=Home –