簡體   English   中英

列表的 C# MVC 模型綁定<T>

[英]C# MVC Model Binding for List<T>

我正在嘗試在 C# 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 列表從我的部分視圖傳遞到我的控制器?

由於您正在提交表單,因此操作的輸入參數應與表單模型相同

public IActionResult Form_AddOrderItems(FormAddOrderItemModel model) 

你的視圖模型可以更簡單

@model Restaurant.Models.Order.Form.FormAddOrderItemModel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM