Создание сложной страницы в asp.net MVC - PullRequest
0 голосов
/ 09 ноября 2009

В настоящее время я рассматриваю лучший способ создания относительно сложной страницы в asp.net mvc. Страница (и подобные ей страницы) будет содержать многочисленные «элементы управления», такие как корзина покупок, виджет последних новостей, элементы управления для входа и многое другое. Другими словами, это будет очень основано на компонентах.

Мой вопрос: как лучше всего построить что-то подобное в asp.net MVC? В обычных веб-формах ответ будет простым благодаря пользовательским элементам управления и тому факту, что они могут быть хорошо автономными. В MVC я понимаю, что теоретически мне, вероятно, следует создать модель представления, которая включает в себя все данные, необходимые для всех моих виджетов, а затем отобразить частичные представления на любой странице, которую я создаю. Может ли альтернативный подход использовать javascript для динамической загрузки виджетов (например, загрузки jQuery), просто вызывая контроллеры, которые отображают частичные представления. Таким образом, у меня может быть контроллер корзины, который при вызове выдает корзину. Конечно, это зависит от JavaScript ....

Какая лучшая практика для подобных ситуаций?

Спасибо

Ответы [ 4 ]

1 голос
/ 09 ноября 2009

Конечно, вы можете использовать JavaScript для заполнения разделов страницы, но тогда этот контент не будет доступен для поисковых систем (но это, вероятно, вас не касается).

Что вам нужно понять, что в настоящее время нет способа заставить эти частичные представления работать независимо. Например, разговаривать с собственным контроллером и публиковать данные, оставляя остальную часть неизменной (как это можно было бы сделать с помощью веб-форм и пользовательских элементов управления). Если вы думаете, что постбэки и контроль контролируют, этих вещей больше не существует. Ваш «элемент управления» создает сообщение, контроллер должен обработать запрос, а затем заново создать полное представление вместе со всеми значениями элементов, состояниями и другими «пользовательскими элементами управления».

Если, конечно, вы не делаете это асинхронно с JavaScript. Но тогда это больше не будет доступной страницей.

0 голосов
/ 15 ноября 2011

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

Razor:

 @if (model.ShowShoppingCart)
 {
     @Html.Action("Index","ShoppingCart")
 }
 @if (model.blah)
 {
     @Html.Action("Index","blah")
 }
0 голосов
/ 04 сентября 2011

Мое понимание MVC еще не дошло до WebForms, однако является общепринятым подходом для таких вещей, как просто бросить эти вещи в ViewBag вместо того, чтобы включать их в ViewModel?

0 голосов
/ 09 ноября 2009

Вы можете попробовать субконтроллеры из MvcContrib или «Частичного запроса» Стива Сандерсона .

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

В любом случае - это плохая идея, и ее следует избегать через наследование контроллера / viewmodel или что-то в этом роде ...

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