2012-05-22 36 views
0

MVC中的模型绑定器可以将发布的值绑定到包含层次结构的视图模型对象吗?使用默认绑定器绑定发布值以查看模型 - MVC3

我有一个Customer,Order和OrderItem表。 OrderItem.OrderID指向Order.ID; Order.CustomerID指向Customer.ID,即常见的Customer - > Order - > OrderItem设置。

而我有一个视图模型 - 客户,其中包含Order对象,然后OrderItem对象以及。

我已经使用VS中的设计器工具创建了EF模型对象。 (在SQL中首先创建数据库表,然后使用EF工具自动创建类)

在单个页面(视图)上,假设我允许用户创建新的Customer记录,Order和一些OrderItem的(一个或多个)。

当用户填写表单(在该视图上创建新的Customer,Order和OrderItems)时,点击提交按钮;默认联编程序会将发布值中的所有值移至我的视图模型中? (视图模型类在层次结构中携带Customer,Order,OrderItem的属性,即Order是Customer内的属性,OrderItem是Order内的属性)。英孚是否足够聪明地将发布的值映射到这样的对象?

+1

这是很多问题 - 你应该考虑把它们分开。另外,不是试着研究你的具体问题,你可能会更好地创建一些示例应用程序 - 看看http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-例如 – StanK

+0

我发现它看起来像6个问题,但正如我前面提到的,它实际上只是一个概念。另外,我看过你之前提到的链接 - 它在哪里回答了基本问题 - 如何保存分层对象?我没有看到它解决。这是我的问题。 MVC/EF上的例子太基本了。斯坦克 - 你是否知道答案,即使你认为他们有6个不同的问题 - 你是否知道答案中的任何一个?这将是很高兴知道你会怎么做。谢谢。 – Mike

+1

斯坦克,你是对的,我的问题很混乱,即使对我来说,当我再次阅读他们!我编辑并缩短了文字。 – Mike

回答

0

是的,MVC足够聪明来处理这种绑定。在MVC中,构建由多个属性组成的“复杂”视图模型相当普遍,这些属性本身就是模型。绑定到集合和字典是困难的,但完全有可能。

在EF中,您可以轻松定义对象之间的关系(例如,客户与订单之间存在一对多关系),EF将处理此情况。 “创建订单和订单项目的顾客”的代码将(我想像)相当简单,但我不是EF专家,所以我将不得不将详细的答案留给其他人。

但是,编辑“编辑客户和/或订单和/或项目”屏幕的EF代码实际上会非常复杂 - 所以您可能会更好地将它们分解为单独的操作,因为这会简化代码相当多。