C# ASP.NET 列表的 MVC 模型绑定 <T>
C# ASP.NET MVC Model Binding for List<T>
我正在尝试在 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
的列表。控制器操作中的 'response' 是 FormContents
的实例化列表,计数为 0。
如何将 FormContents
的列表从我的局部视图传递到我的控制器?
因为你提交的是表单,所以动作的输入参数应该和表单模型一样
public IActionResult Form_AddOrderItems(FormAddOrderItemModel model)
并且您的视图模型可以更简单
@model Restaurant.Models.Order.Form.FormAddOrderItemModel
我正在尝试在 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
的列表。控制器操作中的 'response' 是 FormContents
的实例化列表,计数为 0。
如何将 FormContents
的列表从我的局部视图传递到我的控制器?
因为你提交的是表单,所以动作的输入参数应该和表单模型一样
public IActionResult Form_AddOrderItems(FormAddOrderItemModel model)
并且您的视图模型可以更简单
@model Restaurant.Models.Order.Form.FormAddOrderItemModel