0

У меня есть гибридный проект ASP.NET WebForms/MVC. На моей главной странице у меня есть «меню» User Control и «Пользовательский контроль нижнего колонтитула». В любом случае. Мне нужно передать некоторые данные (2 строки) в мое «меню» User Control на моей главной странице (чтобы выбрать текущую вкладку в моей навигации по меню и т. Д.). Мои представления сильно типизированы для моей модели данных. Как я могу перенести данные с моего контроллера в мое меню или, по крайней мере, позволить моей главной странице получить доступ к некоторым данным, предварительно определенным в моем контроллере?Передача данных на главную страницу с ASP.NET MVC

Примечание: Я понимаю, что это нарушает чистый ASP.NET MVC, но, как я уже сказал, это гибридный проект. Основная цель моего введения в ASP.NET MVC в мой проект заключалась в том, чтобы иметь больше контроля над моим пользовательским интерфейсом только для определенных ситуаций.

ответ

2

Поместите ваши строки в коллекции ViewData,

ViewData["MenuString1"] = "My First String"; 
ViewData["MenuString2"] = "My Second String"; 

и получить их в мастер-страницы, как это:

myMenu.Property1 = ViewData["MenuString1"].ToString(); 
myMenu.Property2 = ViewData["MenuString2"].ToString(); 

http://nerddinnerbook.s3.amazonaws.com/Part6.htm

1

Вы можете использовать ViewData для обмена данными между Controller и View, который не находится в модели. В контроллере сделайте что-нибудь вроде ViewData["menu"] = myMenu;, а затем в представлении <%= ViewData["menu"] %>. Вы можете передавать объекты, но вам нужно отбросить ViewData [ключ] обратно к типу объекта в представлении.

Другой способ сделать это - разместить ваши меню и другие данные, не связанные с моделью, в отдельный контроллер. Затем вы можете использовать RenderAction для вызова действия в вашем навигационном контроллере, который генерирует меню. Hack has a blog post on RenderAction that explains this in more detail.

Я наклоняюсь к использованию ViewData для временных значений из контроллера, таких как списки выбора, и RenderAction для несвязанных вещей, таких как основная навигация по сайту.

Смежные вопросы