Передача данных на главную страницу с помощью ASP.NET MVC - PullRequest
0 голосов
/ 07 апреля 2010

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

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

Ответы [ 2 ]

2 голосов
/ 07 апреля 2010

Поместите свои строки в коллекцию 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 голос
/ 07 апреля 2010

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

Другой способ сделать это - поместить ваши меню и другие данные, не относящиеся к модели, в отдельный контроллер. Затем вы можете использовать RenderAction для вызова действия в вашем контроллере навигации, который генерирует меню. У Хака есть запись в блоге на RenderAction, которая объясняет это более подробно.

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

...