dynatree + asp.net mvc - как вы отправляете данные обратно на сервер? - PullRequest
1 голос
/ 14 марта 2012

Я использую asp.net mvc 3 и, возможно, использую dynatree. Я все еще нахожусь на исследовательской странице и пытаюсь выяснить некоторые нерешенные вопросы, прежде чем приступить к ее реализации.

Dynatree с ASP.NET MVC

Я смотрел на этот пост и то, как @Matt Penner отображает его древовидную структуру, и в моем мнении выглядит чище, чем принятый ответ.

Однако у меня есть один вопрос: как вы публикуете проверенные опции на сервере?Когда он рендерится, все это будут маркеры маркеров, которые будут преобразованы в флажки.

Поэтому мне интересно, как мне сериализовать эти данные?Прямо сейчас у меня есть форма, и когда пользователь нажимает «Отправить», я делаю jquery serializeArrary и отправляю его через ajax на сервер, где он привязывается к моей модели представления.

Как мне сделать это для вариантов, выбранных ввид дерева?

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

Спасибо

1 Ответ

2 голосов
/ 21 марта 2012

Способ, которым Мэтт Пеннер рендерит дерево, проще и чище ... но поскольку он не построил "модели", представляющие данные дерева, его метод нелегко использовать для считывания дерева. Дерево должно быть считано обратно в «модель», и, поскольку оно является деревом, такая модель должна быть рекурсивной, как показано в первом примере.

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

Дети [2] .children [0] .MyCheckBox

Будет прочитано обратно в: третий ребенок первый уровень => первый ребенок второй уровень модель иерархической модели, которую вы должны построить, чтобы получить опубликованные данные.

Однако этот подход хорошо работает, если пользователь не изменяет структуру дерева, потому что в таком случае флажок с именем Children [2] .Children [0] .MyCheckBox может оказаться в другом месте, чем его имя предполагает, что это будет не более 3-го дочернего уровня, и может стать, например, 5-м дочерним первым уровнем ... но его имя не меняется.

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

При этом взгляните на TreeView набора инструментов управления Mvc (я координатор проекта) ... он уже выполнил всю работу за вас, и вы можете использовать универсальный шаблон для каждый узел, то есть вы можете поставить все, что вам нравится в каждом узле:

...