C# 在ASP.NET MVC中发送项目集合
在我的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
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接受的类型此示例有点难以理解。有可能看到一些代码吗?