MVC中的Model Binder可以将发布的值绑定到包含层次结构的视图模型对象吗?
我有一个Customer,Order和OrderItem表。 OrderItem.OrderID指向Order.ID;和Order.CustomerID指向Customer.ID,即普通客户 - >订单 - > OrderItem设置。
我有一个视图模型 - Customer包含Order对象,然后是OrderItem对象。
我使用VS中的设计器工具创建了EF模型对象。 (首先在SQL中创建数据库表,然后使用EF工具自动创建类)
在单个页面(视图)上,假设我允许用户创建新的客户记录,订单和一些OrderItem。
当用户填写表单(在这一个视图上创建一个新的Customer,Order和OrderItems)时,单击提交按钮;默认活页夹会将所有值从已发布值移动到我的视图模型吗? (视图模型类在层次结构中携带Customer,Order,OrderItem的属性,即Order是Customer中的属性,OrderItem是Order中的属性)。 EF足够聪明,可以将发布的值映射到这样的对象吗?
答案 0 :(得分:0)
是的,MVC非常聪明,可以处理这种绑定。在MVC中建立一个由多个属性组成的“复杂”视图模型是很常见的,这些属性本身就是模型。绑定到集合和词典更难,但完全有可能。
在EF中,您可以轻松定义对象之间的关系(例如,客户和订单之间存在1对多的关系),EF将处理此问题。 “创建客户订单和订单商品”的代码(我想)会相当简单,但我不是EF专家,所以我必须将详细的答案留给别人。
但是,“编辑客户和/或订单和/或项目”屏幕的EF代码实际上会非常复杂 - 因此您可能最好将这些代码拆分为单独的操作,因为这会简化代码非常多。