2012-06-06 46 views
0

我很新的MVC3,只是学习,我正在寻找一些指导。mvc3 - 实现与编辑器的变量类型递归模型..

为了简单起见,我有一个代表3种元素,问题,答案和容器的模型。

所有3都从一个通用基类型继承而来,我将调用baseElement。

当模型被传递到视图它的类型为“baseElement”

容器元件具有baseElements的内部列表中的单个对象。这些baseElements可以是以上三种类型中的任何一种。所以 - 容器可以包含问题或容器(也可以包含问题,容器等)。

每个问题都可以包含不同类型的答案类型。

我想弄清楚如何使用mvc3来最好地实现一个系统来向用户显示这个容器/问题结构 - 允许他们在尊重传入模型的嵌套结构的同时回答各种答案类型的问题。

+0

这个嵌套应该如何在接口级别上工作?巢有限制吗?当你的容器有16层时会发生什么?该观点如何预期作出回应? –

+0

这通常是一个问题。 MVC解析复杂对象时存在一些问题。它可以完成,但重新考虑你的模型和查看策略通常要痛苦得多。 –

+0

我使用backbone.js来处理类似的情况,而不是mvc视图。 – asawyer

回答

0

好吧,尽管我的模型具有动态特性,但经过漫长一段时间后,我已经能够渲染我的模型对象结构而没有太多的复杂性。

我通过使用强类型的编辑器模板(每个类型一个)和视图中的以下代码完成了它。

@Html.EditorFor(x => @Model, @Model.GetType().Name) 

这会根据实际类型自动选择合适的编辑器模板。 在每个类型特定的编辑器模板中,我为每个孩子进行相同的调用。

它实际上最终变得非常简单。

现在我遇到的一个大问题是,如何将表单值绑定(或以其他方式检索)回到用户发布的可用内容中。结构的动态特性导致默认的模型绑定器穿过它的手臂并放弃。

在这一点上,我认为检索/重新映射表单数据可能是一个更大的问题,但这肯定需要更多的修补,也许是一个单独的问题。

感谢您的帮助。 :-)