我正在使用asp.net mvc 3,并且可能正在使用 dynatree.我仍然在研究页面中,并在开始实际实施之前尝试找出一些悬而未决的问题。
我一直在看上面的帖子以及@Matt Penner如何呈现他的树视图,而我的opion看起来比接受的答案更清晰。
我遇到的一个问题是如何将选中的选项发布到服务器?当它被渲染时,似乎所有的子弹标签都被转换为看起来像复选框。
所以我想知道如何序列化这些数据?现在我有一个表单,当用户点击提交时,我做一个jquery serializeArrary并通过ajax将它发送到服务器,然后绑定到我的View模型。
如何在树视图中选择的选项中执行此操作?
我也不清楚如何根据Matt Penner的示例使用默认的检查节点渲染树视图。
由于
答案 0 :(得分:2)
Matt Penner渲染树的方式更简单,更清晰......但由于ha没有构建代表树数据的“模型”,因此使用他的方法回读树是不容易的。必须将树读回“模型”,因为它是一棵树,所以这个模型必须是递归的,如第一个例子中所示。
但是,如果您为复选框指定了足够的名称,则可以将其读回。事实上,post上的模型绑定是通过使用名称约定来完成的,例如名为:
的复选框儿童[2]。儿童[0] .MyCheckBox
将在以下内容中读回: 第三个孩子第一级=>第一个孩子第二级 为了接收发布的数据,你必须建立的分层模型的模型。
然而,如果用户不修改树的结构,这种方法很有效,因为在这种情况下,名为Children [2] .Children [0] .MyCheckBox的复选框可能会出现在其名称的不同位置建议,那就是它不再是3个孩子的水平,并且可能会变成,例如第5个孩子的第一级...但它的名字不会改变。
另一方面,如果您在客户端上序列化数据,然后将它们以json的形式发送到服务器,您将能够同时考虑树的修改。
那说看看TreeView of the Mvc Controls Toolkit(我是项目的协调员)......它已经为你完成了所有工作,你可以为每个节点使用通用模板,也就是说你可以在每个节点中充当你喜欢的东西: