1

我正在使用 asp.net mvc 3 并查看可能使用dynatree。在我开始实际实施之前,我仍在研究页面中并试图找出一些悬而未决的问题。

动态树与 ASP.NET MVC

我一直在看上面的帖子以及@Matt Penner 如何呈现他的树视图,在我看来,它看起来比公认的答案更干净。

我的一个问题是如何将选中的选项发布到服务器?当它被渲染时,它似乎都是被转换为看起来像复选框的项目符号标签。

所以我想知道如何序列化这些数据?现在我有一个表单,当用户点击提交时,我执行一个 jquery serializeArrary 并通过 ajax 将其发送到服务器,并在服务器上绑定到我的视图模型。

我将如何为树视图中选择的选项执行此操作?

我也不清楚如何根据 Matt Penner 的示例呈现带有默认选中节点的树视图。

谢谢

4

1 回答 1

2

Matt Penner 渲染树的方式更简单、更清晰……但由于 ha 没有构建表示树数据的“模型”,因此使用他的方法来读回树并不容易。必须将树读回“模型”,并且由于它是树,因此该模型必须是递归的,如第一个示例中所示。

但是,如果您为复选框提供足够的名称,您可以将它们读回。事实上,post 上的模型绑定是通过使用命名约定来完成的,例如一个名为:

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

将在以下内容中回读:第三个孩子第一级 => 您必须构建的分层模型的第一级孩子第二级模型才能接收发布的数据。

但是,如果用户不修改树的结构,这种方法效果很好,因为在这种情况下,名为 Children[2].Children[0].MyCheckBox 的复选框可能会出现在其名称所暗示的不同位置,即是不是不再是第 3 个孩子的第一级,而是可能成为例如第 5 个孩子的第一个级别……但它的名字没有改变。

另一方面,如果您在客户端序列化数据,然后将它们以 json 格式发送到服务器,您将能够考虑到树的修改。

也就是说,看看Mvc Controls Toolkit 的 TreeView(我是该项目的协调员)...它已经为您完成了所有工作,您可以为每个节点使用通用模板,也就是说,您可以放置​​ everuthing你喜欢的每个节点:

于 2012-03-21T09:03:01.383 回答