创建模型类,如下所示:
public class OrderItem
{
public int ProductId { get; set; }
public int Quantity { get; set; }
}
在视图中使用循环来创建多个下拉列表,每个下拉列表都有对应的数量输入框,如下所示:
在控制器中,使用视图模型类来接收请求参数,并将请求参数转换为实体对象,然后进行插入操作,如下所示:
public class OrderViewModel
{
public IEnumerable Products { get; set; }
public List Items { get; set; }
}
public class OrderController : Controller
{
private readonly ApplicationDbContext _context;
public OrderController(ApplicationDbContext context)
{
_context = context;
}
public IActionResult Index()
{
var vm = new OrderViewModel
{
Products = _context.Products.Select(p => new SelectListItem
{
Value = p.Id.ToString(),
Text = p.Name
}),
Items = new List
{
new OrderItem(),
new OrderItem(),
new OrderItem()
}
};
return View(vm);
}
[HttpPost]
public IActionResult Index(OrderViewModel vm)
{
if (ModelState.IsValid)
{
var order = new Order
{
OrderDate = DateTime.Now,
Items = vm.Items.Where(i => i.ProductId != 0).Select(i => new OrderItem
{
ProductId = i.ProductId