1

私はasp.netmvc3を使用しており、おそらくdynatreeを使用することを検討しています。私はまだ調査ページにいて、実際に実装を開始する前に、いくつかの未解決の質問を見つけようとしています。

ASP.NETMVCを使用したDynatree

私は上記の投稿と、@ Matt Pennerが彼のツリービューをどのようにレンダリングするかを見ていて、私の意見では、受け入れられた答えよりもきれいに見えます。

私が持っている1つの質問は、チェックしたオプションをサーバーにどのように投稿するかです。レンダリングされると、チェックボックスのように変換されるすべての弾丸タグのように見えます。

では、どうすればそのデータをシリアル化できるのでしょうか。現在、フォームがあり、ユーザーが送信を押すと、jquery serializeArraryを実行し、それをajax経由でサーバーに送信します。サーバーでビューモデルにバインドされます。

ツリービューで選択した選択肢に対してどのようにすればよいですか?

Matt Pennerの例に基づいて、デフォルトのチェックされたノードを使用してツリービューをレンダリングする方法もわかりません。

ありがとう

4

1 に答える 1

2

Matt Pennerがツリーをレンダリングする方法は、よりシンプルでクリーンです...しかし、haはツリーデータを表す「モデル」を構築していないため、彼のアプローチを使用してツリーを読み戻すのは簡単ではありません。ツリーは「モデル」に読み戻す必要があります。ツリーであるため、このようなモデルは最初の例に示すように再帰的である必要があります。

ただし、チェックボックスに適切な名前を付けると、それらを読み戻すことができます。実際、投稿でのモデルバインディングは命名規則を使用して行われるため、たとえば次の名前のチェックボックスがあります。

Children [2] .Children [0] .MyCheckBox

読み戻されます:第3の子供第1レベル=>投稿されたデータを受信するために構築する必要のある階層モデルの第1の子供第2レベルのモデル。

ただし、ユーザーがツリーの構造を変更しない場合、このアプローチはうまく機能します。そのような場合、Children [2] .Children [0] .MyCheckBoxという名前のチェックボックスが、その名前が示す別の場所に来る可能性があるためです。それはもはや3つの子の最初のレベルではなく、たとえば5番目の子の最初のレベルになる可能性があります...しかしその名前は変わりません。

一方、クライアントでデータをシリアル化してから、jsonでサーバーに送信すると、ツリーの変更も考慮に入れることができます。

そうは言っても、Mvc Controls ToolkitのTreeViewを見てください(私はプロジェクトのコーディネーターです)...それはすでにすべての仕事をしてくれます、そしてあなたは各ノードに一般的なテンプレートを使うことができます、つまりあなたはすべてを置くことができます各ノードで好きです:

于 2012-03-21T09:03:01.383 に答える