Как структурировать представления / контроллеры / действия (/ области?) В приложении asp.net mvc в этом контексте? - PullRequest
1 голос
/ 03 сентября 2010

alt text

Вверху приведена самая полезная информация о foo.

Между горизонтальными линиями есть некоторые немедленные действия, если они доступны, для выполнения с / с foo.

А вот что меня беспокоит. Там идет вкладка, подробная информация о Foo.
Эти вкладки также могут содержать некоторые действия и могут быть довольно суверенными.

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

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


В модели - странная вещь: отношение 1 на 1. Как будто есть Contest (Foo) и Participant. Вкладки с подробным описанием Participant.

В настоящее время я смоделировал их как агрегатные корни . Но это может быть неправильный выбор.

Итак - если есть два корня, кажется естественным, если у них обоих есть контроллеры, а Contest не отвечает за хранение всех данных.

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

1 Ответ

3 голосов
/ 04 сентября 2010

Я могу придумать пару вариантов для этих вкладок ... какой из них имеет смысл, вероятно, зависит от того, как выглядит ваша Модель, как вы извлекаете данные и, в некоторой степени, как выглядит остальная часть вашего приложения.*

Вариант 1 .Частичные представления с RenderPartial ().Каждая вкладка является частичным представлением, которое отображает некоторую часть вашей модели.Например, у вас будет частичное представление FinancialInformation.aspx, которое отображает Model.FinancialInformation.

Опция 2a .Действия Sub с RenderAction ().Аналогично выше, за исключением того, что каждая вкладка отвечает за извлечение своих собственных данных путем вызова метода действия либо на том же контроллере, либо, что более вероятно, на другом контроллере, который специализируется на этой информации.То же, что 2a, за исключением того, что вкладки отображаются по требованию с использованием AJAX.

Следует отметить, что ни один из этих вариантов не является взаимоисключающим .Вы можете использовать опцию 1 (RenderPartial ()) для первых двух вкладок, поскольку эти данные являются неотъемлемой частью вашей модели.И вы можете использовать опцию 2 (RenderAction ()) для двух других вкладок, потому что, например, у вас может быть ChartController, специализирующийся на рендеринге диаграмм ...

...