0

MVC 中的模型绑定器可以将发布的值绑定到包含层次结构的视图模型对象吗?

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

我有一个视图模型——Customer,它包含 Order 对象和 OrderItem 对象。

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

假设在单个页面(视图)上,我将允许用户创建一个新的客户记录、一个订单和一些 OrderItem。

当用户填写表单时(在这个视图上创建一个新的 Customer、Order 和 OrderItems),点击提交按钮;默认活页夹会将所有值从发布的值移动到我的视图模型吗?(视图模型类在层次结构中承载 Customer、Order、OrderItem 的属性,即 Order 是 Customer 中的属性,OrderItem 是 Order 中的属性)。EF 是否足够聪明,可以将发布的值映射到这样的对象?

4

1 回答 1

0

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

在 EF 中,您可以轻松地定义对象之间的关系(例如,客户和订单之间存在一对多的关系),并且 EF 会处理得很好。“使用订单和订单项目创建客户”的代码(我想)将相当简单,但我不是 EF 专家,所以我必须将详细答案留给其他人。

但是,“编辑客户和/或订单和/或项目”屏幕的 EF 代码实际上会非常复杂 - 因此您最好将它们拆分为单独的操作,因为这会大大简化代码.

于 2012-05-22T21:50:44.463 回答