List<T> 的 C# ASP.NET MVC 模型绑定
Posted
技术标签:
【中文标题】List<T> 的 C# ASP.NET MVC 模型绑定【英文标题】:C# ASP.NET MVC Model Binding for List<T> 【发布时间】:2021-12-27 02:00:45 【问题描述】:我正在尝试在 C# ASP.NET MVC 中为带有模型绑定的练习餐厅应用程序创建一个表单。我很难理解我到底做错了什么或如何做。我有一个OrderItems
的表格和一个数量。我想制作带有数量的模型,以便在数据库中制作相应的订单行。
表格(是局部视图):
@using FormAddOrderItemModel = Restaurant.Models.Order.Form.FormAddOrderItemModel
@model FormAddOrderItemModel;
@using (html.BeginForm("Form_AddOrderItems", "Order", FormMethod.Post))
for (var i = 0; i < Model.OrderItems.Count; i++)
var item = Model.OrderItems[i];
<div>
@Html.Label(item.Name)
@Html.HiddenFor(m => m.ContentsList[i].OrderItem, item)
@Html.LabelFor(m => m.ContentsList[i].Quantity)
@Html.TextBoxFor(m => m.ContentsList[i].Quantity)
</div>
<input class="btn btn-primary" type="submit" value="Submit">
模型:
using System.Collections.Generic;
namespace Restaurant.Models.Order.Form
public class FormAddOrderItemModel
public List<OrderItem> OrderItems get; set;
public List<FormContents> ContentsList get; set;
public class FormContents
public OrderItem OrderItem get; set;
public int Quantity get; set;
控制器动作方法:
[HttpPost]
public IActionResult Form_AddOrderItems(List<FormContents> response)
var test = response;
return View("ManageOrder", _orderService.PrepareManageOrderViewModel(12));
我假设这将填充FormContents
的列表。控制器操作中的“响应”是FormContents
的实例化列表,计数为 0。
如何将FormContents
列表从我的部分视图传递给我的控制器?
【问题讨论】:
【参考方案1】:由于是提交表单,所以action的输入参数应该和表单模型一致
public IActionResult Form_AddOrderItems(FormAddOrderItemModel model)
你的视图模型可以更简单
@model Restaurant.Models.Order.Form.FormAddOrderItemModel
【讨论】:
以上是关于List<T> 的 C# ASP.NET MVC 模型绑定的主要内容,如果未能解决你的问题,请参考以下文章