2012-04-01 2 views
1

У меня есть веб-страница, которая включает в себя 1 главную панель, на которой отображается информация, и боковая панель, которая может отображать одну из нескольких панелей на основе того, что происходит на главной панели. Так, например, основная панель может отображать список проектов, и вы можете щелкнуть по проекту, который должен отображать панель редактирования. Или вы можете удалить проект, который должен отображать панель удаления. Там около 5 или 6 панелей. Это не все приложение, поэтому я не могу сделать основную панель частичным.Как обрабатывать многострочный макет

Как бы это реализовать? В основном я пытаюсь вернуть два представления в контроллер, но, очевидно, это невозможно. Я предполагаю, что главной панелью должно быть представление, возвращаемое контроллером. Но как я смогу установить боковую панель? Могу ли я объединить 2 вида в 1 в рамках действия 1 контроллера? Или мне нужно связать два контроллера с одним действием? Как мне это сделать?

Я действительно новичок в ASP.NET MVC, но у меня возникли проблемы с самим собой. Спасибо за терпеливость.

ответ

0

В этом случае вы можете использовать ViewModel для сбора нескольких моделей доменов и передать их в виде как detailed here (это то, что я бы сделал). В равной степени вы можете просто передать объект главной панели в качестве строго типизированного объекта и использовать ViewData для передачи других элементов данных. Затем вы можете использовать отдельные частичные виды для отдельных панелей, что делают их посредством передачи данных с использованием

@{ Html.RenderPartial("ViewName", dataItem); } 
+0

спасибо; Я считал этот последний вариант; не приведет ли это к довольно большому оператору switch-statement, который должен был бы выяснить, какую панель показывать, другими словами, работу контроллеров? – garma

+0

Ну, для частичного представления требуется только строка для определения визуализации вида и которая может быть передана из контроллера, а не иметь много логики в представлении. – AlexC

0

данными мудрыми вы бы использовать передать один объект вида модели, содержащий данные для различных панелей, как указано @AlexC.

UI-мудрый вы можете использовать вкладки Jquery плагин для визуализации различных панелей, как показано здесь - http://jquerytools.org/demos/tabs/index.html