MVC, где визуализировать вид меню - PullRequest
0 голосов
/ 23 декабря 2008

вот что я пытаюсь сделать:

На странице у меня будет LeftMenu, который будет независим от страницы, и RightMenu, который будет зависеть от страницы, на которой в данный момент находится пользователь.

Я хочу использовать MVC из asp.net. Я мог бы использовать RenderPartial для рендеринга меню, но, с другой стороны, View не должен это обрабатывать - поэтому мне кажется, что я думаю больше о WinForms, чем MVC.

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

Как бы вы справились с этой ситуацией? Также будут очень благодарны за любые ссылки, которые говорят об этом.

РЕДАКТИРОВАТЬ Когда я сказал, что View не должен обрабатывать это, я думал о RenderPartial в каждом представлении, и это было довольно неприятно - я думаю, что подход с мастер-страницей и затем каждый контроллер помещает что-то в ViewModel что RightMenu будет знать, что визуализация может быть тем, что я ищу.

Ответы [ 4 ]

1 голос
/ 25 декабря 2008

В первые дни CTP MVC мы обсуждали это подробно.

Я не верю, что контроллер должен вставлять все виды несколько не связанных данных (в свою задачу) в ViewModel для управления меню.

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

Я не очень много работал с MVC после CTP, но я считаю, что был разработан компромисс под названием RenderAction, который позволяет представлению (или главной странице) вызывать контроллер и порождать частичное представление.

Это область, где идея MVC действительно рушится, потому что вы начинаете получать слишком много логики в вашем представлении.

1 голос
/ 23 декабря 2008

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

0 голосов
/ 25 декабря 2008

Для левого меню поместите его в мастер-страницу и используйте частичное (пользовательский контроль для него).

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

0 голосов
/ 23 декабря 2008

Предположим, что плитки похожи на фреймворк, где вы можете отделить левую сторону, у которой есть меню, а правая сторона - это тело. Поэтому, когда вы создаете шаблон, используйте правую часть от вставки страницы, которая загружается независимо. Вы можете искать [http://tiles.apache.org/index.html][1]

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