Как сделать богатые / сложные взгляды - PullRequest
1 голос
/ 07 февраля 2010

Я недавно начал изучать ASP.NET MVC. Я изучил немало примеров, и для них характерно то, что они содержат довольно простые сценарии, в которых представление будет отображаться либо на экземпляр типа в модели, либо на список типичного типа модели.

Я ищу рекомендации по составлению / составному просмотру. В долгосрочной перспективе я хотел бы, чтобы Ajax был частью уравнения, но сейчас я ищу более простую установку без Ajax.

Проблема

Вот описание надуманной проблемы. Модель домена содержит типы A и B .

class A
{ String ID, String Name, int Age
  List<B> ListOfB
}

class B
{ String ID, String Name, String Url}

Я хотел бы иметь следующее:

  • DropDownList показывает тип A информация
  • Сведения о конкретном A , выбранном в раскрывающемся списке
  • Список, показывающий тип B , связанный с выбранным типом A
  • Форма, позволяющая редактировать данные выбранного типа A
  • Форма, позволяющая пользователю добавить новый B.

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

  1. Изначально отображать только выпадающий список, содержащий A 's
  2. Если в раскрывающемся списке выбран A :
    • Показать конкретный A , выбранный в раскрывающемся списке
    • Показать подробную информацию о выбранном A
    • Показать список подробной информации связанного типа B 's
  3. Пользователь хочет отредактировать определенный A
    • Показать конкретный A , выбранный в раскрывающемся списке
    • Показать форму, которая позволяет пользователю редактировать A
    • Показать список подробной информации связанного типа B 's
  4. Пользователь хочет добавить новый B
    • Показать конкретный A , выбранный в раскрывающемся списке
    • Показать подробную информацию о выбранном A
    • Показать список подробной информации связанного типа B 's

Это может выглядеть примерно так (используется веб-версия макетов balsamiq - какое фантастическое изобретение!):

Комбинация 2:
combination 2 mockup

Комбинация 4:
combination 4 mockup

Создание вида и контроллера

Поскольку решение должно учитывать различные комбинации данных и функциональности, я думаю, было бы разумно иметь родительское представление (не путать с главной страницей), содержащее заполнители для четных представлений. Затем контроллер родительских представлений может составить правильные комбинации данных модели и частичных представлений и передать их в родительское представление.

Наконец; вопросы:

  • Мой образ мышления соответствует методологии asp.net mvc?

  • Можете ли вы объяснить / показать (не обязательно все), как контроллер может скомпилировать правильную комбинацию частичных представлений и передать их в родительское представление?

  • Можете ли вы указать мне на решение на основе Ajax?

  • Можете ли вы предложить книги / ссылки, содержащие примеры сложных представлений?

1 Ответ

2 голосов
/ 07 февраля 2010

asp.net mvc полностью поддерживает все ваши требования, но есть несколько вещей, которые вы должны освоить:

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

  2. Вам нужно освоиться с клиентской структурой javascript для работы ajax с частичным рендерингом html. jquery сделает это или ms ajax . Вот пример

К вашим детальным вопросам:

Соответствует ли мой способ мышления методологии asp.net mvc?

Asp.net mvc вообще не будет вас сдерживать, так что по сути это полностью поддерживается

Можете ли вы объяснить / показать (не обязательно все), как контроллер может скомпилировать правильную комбинацию частичных представлений и передать их в родительское представление?

Вы можете использовать частичные представления, если хотите отделить биты кода и легко обновлять их, загружая их независимо, используя ms ajax или jquery. У вас будет контроллер, который отображается на родительский вид и может делегировать и обновлять частичные представления в вызовах ajax .

Можете ли вы указать мне на решение на основе Ajax?

jquery сделает это или ms ajax . Вот пример

Можете ли вы предложить книги / ссылки, содержащие примеры сложных представлений?

Эта ссылка много говорит об этом.

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