Много скрытых элементов div для отображения на странице ASP.NET MVC с помощью диалогов jQuery.Должен ли я использовать частичные представления? - PullRequest
0 голосов
/ 06 апреля 2011

Я работал над моим первым крупным приложением ASP.NET MVC (плюс большое количество jQuery) в течение месяца или около того, и я очень доволен этим.У меня есть страница, которая выглядит примерно так.(Фактические данные изменены на защищенные невиновные.)

<div id="main"></div>
<div id="movies"></div>
<div id="actors"></div>
<div id="actor-ratings"></div>
<div id="ratings-comments"></div>

Div для фильмов содержит таблицу фильмов для выбора.Актеры, актеры-рейтинги и рейтинги-комментарии - все это скрыто.Когда щелкают по фильму, у меня есть событие jQuery live (), чтобы получить щелчок, опубликовать в действии, получить данные, а затем функцию обратного вызова, чтобы получить данные и поместить их в модальное всплывающее окно.(Я думаю, что у меня правильный порядок, не стесняйтесь сообщать мне, если я делаю что-то неправильно.)

Поскольку актеры, рейтинги актеров и комментарии-рейтинги потенциально могут быть загружены на одной страницемой контроллер заканчивает тем, что выполнил огромные действия по загрузке всех этих данных. Плюс, рейтинги-комментарии могут закрывать модал-актер-рейтинги и открываться в новом модале.И вдобавок ко всему, я хочу реализовать плагин «Адрес jQuery», чтобы позволить кнопке «Назад» вернуться к ранее открытым модалам.

Довольно быстро становится сложным.Должен ли я использовать частичные представления для каждого из этих элементов?Должен ли я иметь один контроллер с действиями для каждого из них?Или контроллер для каждого частичного просмотра / деления?Частичные div'ы кажутся подходящим вариантом, но я думаю, что я ищу какое-то руководство, прежде чем вскочить и разбить свой код.Буду признателен за любой совет.

Редактировать: Кроме того, мой частичный просмотр рейтингов актеров, вероятно, потребует некоторых данных из частичного просмотра актеров.У меня просто есть загрузка действия моего контроллера ActorRatings в данных актера?(Я передаю строго типизированные модели представления.)

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Как вы описали, используя отдельные действия, возвращающие частичное представление в случаях, когда мне нужно иметь дело с динамическим содержимым всплывающих окон, это путь.Действия могут быть привязаны к одному контроллеру или распределены между различными в зависимости от содержимого - это больше зависит от того, что еще у вас происходит, помимо этого представления.Частичные представления позволяют вам использовать одно реальное диалоговое окно jquery, где я просто загружаю форму, которая мне интересна в настоящее время. Затем вы можете использовать jQuery serialize (), чтобы подготовить модель и отослать ее к действию сохранения, если это необходимо сделать асинхронным.О частичной оценке актера: есть 2 способа - передать данные в действие контроллера или использовать js, чтобы изменить частичное представление, которое вы получаете по своему вкусу.Первый способ следует использовать, если изменения более серозные или требуют больше данных, чем на виде.Также, если есть некоторые правила, которым нужно следовать - вы не хотите помещать слишком много в js.Второй способ приемлем, когда для частичного выполнения требуются лишь незначительные настройки, и вы не хотите отправлять данные для приема-передачи - но это может стать головной болью для поддержки.

1 голос
/ 06 апреля 2011

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

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

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

Трудно комментировать общие данные между Actors и ActorRatings без более подробной информации. Не может ли метод действия Actors получить всю необходимую информацию или он обновляется из-за вызываемого метода ActorRatings?

...