C# 在ASP.NET MVC中发送项目集合

C# 在ASP.NET MVC中发送项目集合,c#,asp.net-mvc,model-view-controller,asp.net-mvc-2,C#,Asp.net Mvc,Model View Controller,Asp.net Mvc 2,在我的MVC项目Order和Product中,我有两个类 因为Product可以多次订购,Order可以有很多产品,所以我有了第三个实体,即OrderedProduct。它以多对多的关系连接这两个实体 现在我要做的是让用户通过将下拉列表中的产品放入框中来下订单,然后保存我的订单。此外,客户端必须填写一些文件在订单实体,如地址数据等,我想要的是有一个单一的页面上的所有。用户可以从下拉列表中添加任意数量的项目,然后可以添加整个订单 要使其更易于可视化,请查看此图片: 现在的问题是如何在我的MVC

在我的MVC项目
Order
Product
中,我有两个类

因为
Product
可以多次订购,
Order
可以有很多产品,所以我有了第三个实体,即
OrderedProduct
。它以多对多的关系连接这两个实体

现在我要做的是让用户通过将下拉列表中的产品放入框中来下订单,然后保存我的订单。此外,客户端必须填写一些文件在订单实体,如地址数据等,我想要的是有一个单一的页面上的所有。用户可以从下拉列表中添加任意数量的项目,然后可以添加整个订单

要使其更易于可视化,请查看此图片:

现在的问题是如何在我的MVC应用程序中实现这种行为。我应该构建一个视图模型,将
订单
类和
产品
列表结合起来,还是对
产品
类使用局部视图

这也是我的主要问题,我如何(以优雅的方式)在POST请求后在控制器中检索所选产品的完整列表或至少产品id?在这种情况下,如何指定我发送的是一组ID?添加一个对象很简单,但是整个集合呢


这是我不完全理解asp.net MVC的地方,所以请给我一些好主意;)向你们大家问好,谢谢你们的回答

所需的界面对我来说似乎有点混乱,但以下是如何处理这些事情。。根据你的愿望修改。我将假设
OrderedProduct
是一个包含产品ID和数量的订购对象,您希望能够同时修改它们

使
订单
成为您的ViewModel。假设它有一个名为
OrderedProducts
列表
属性:
创建一个小编辑器控件,其ViewModel为
OrderedProduct
。没有表单,只有一个绑定到product name属性的文本框/下拉列表/任何内容,以及一个绑定到product quantity的文本框重要信息:将此控件置于视图/shared/EditorTemplates中,并将其命名为OrderedProduct.ascx

为您的
Order
对象指定一个名为
NewOrderedProduct
OrderedProduct
类型的属性。 在
订单
视图do:
m.OrderedProducts)%%>
的表单中,这将为您提供订单中当前项目的可编辑列表。
然后执行:
m.NewOrderedProduct)%%>
这是您可以添加新项目的地方。
让[POST]操作执行一种类型的
订单

现在,当它提交时,如果
NewOrderedProduct
属性有效,您可以将其添加到
OrderedProducts
列表并重新显示。您可以通过这种方式添加任意数量的内容,它们都将自动绑定

表单中有一个单独的提交按钮用于提交订单。检查[POST]中是否存在该按钮的名称,并一次性提交所有内容

这将为您提供一个直接的HTML工作版本。如果你想的话,你可以从那里把它转成Ajaxify

编辑

更新以反映
OrderedProduct
对象的功能,并更正post接受的类型

此示例有点难以理解。有可能看到一些代码吗?