2012-03-13 62 views
1

我正在使用asp.net mvc 3并正在寻找可能使用的 dynatree.我仍处于研究页面,并试图找出一些未解决的问题,然后才开始真正实施它。dynatree + asp.net mvc - 你如何发布数据回服务器?

Dynatree with ASP.NET MVC

我一直在看上面的帖子以及如何@马特彭纳呈现他的树视图,在我opion看起来比接受的答案干净。

但我有一个问题是,你如何发布选项到服务器?当它被渲染时,它似乎都是被转换成复选框的子弹标签。

所以我想知道如何序列化这些数据?现在我有一个表单,当用户点击提交时,我做了一个jquery serializeArrary并通过ajax发送到绑定到View Model的服务器。

我该如何处理树视图中选择的选项?

我也不清楚如何使用基于Matt Penner示例的默认选中节点渲染树视图。

感谢

回答

2

方式马特·彭纳渲染树是简单和清晰......但由于房委会并没有建立代表树的数据“模型”,这是不容易的使用他的方法来读回树。树必须被读回到“模型”中,因为它是一棵树,所以这个模型必须像第一个例子中所示的那样递归。

但是,如果您给复选框提供足够的名称,则可以将它们读回。事实上模型上结合后,通过使用一个名称约定完成,因此例如一个复选框名为:

儿童[2]。患儿[0] .MyCheckBox

将在回读: 第三胎第一级=>第一级第二级 您必须建立以接收发布数据的分层模型的模型。

但是,如果用户没有修改树的结构,这种方法效果很好,因为在这种情况下,名为Children [2] .Children [0] .MyCheckBox的复选框可能会到达不同的地方,名字暗示,也就是说它不会再是三个孩子的成就水平,并且可能会变成,例如第五个孩子的第一个水平...但是它的名字不会改变。

另一方面,如果您序列化客户端上的数据,然后用json将它们发送给服务器,那么您也可以考虑树形修改。

这就是说看看TreeView of the Mvc Controls Toolkit(我是该项目的协调员)......它已经为你做好了所有的工作,并且你可以为每个节点使用一个通用模板,也就是说你可以把你像在每个节点:

+0

这是intresting,但我不知道这是我喜欢使用的东西。我对这个庞大的html帮手并不是太疯狂,因为它让设计师难以接受。我宁愿像使用复选框帮助器,而只是一个常规的无序列表标记。 – chobo2 2012-03-27 16:40:37

+0

treeView只显示包含节点模板的无序列表+它需要工作信息的一些隐藏字段,因此您可以完全控制所创建的html。无论如何,如果你想给自己写一个完整的Html,这样你就可以更好地与你的设计师互动,另一种方法是编写你嵌套的模型绑定忘记。在发布后,您会调用一个js函数来对树进行递归访问,并将关于cheched复选框的信息存储在分层模型中。然后你用json将它序列化,放入一个隐藏的区域,然后在服务器上反序列化它。 – 2012-03-27 16:56:22

+0

你可以举一个更详细的例子。我不认为我需要为我需要做的事情放弃模型绑定。 – chobo2 2012-03-27 19:23:46