将包含多个对象的表单提交给Controller

时间:2017-11-14 06:46:25

标签: jquery asp.net forms asp.net-core

问题:

我有一个包含多个制表符的视图。每个选项卡窗格对应一个Store

在每个标签窗格(Store)内,有一个表格,其中包含分配给该商店的所有Devices的信息。每个Device(每个Device属于Machine)的信息会连续显示。

目前每行都包装成一个单独的表格,但这可能会有所变化。

我正在寻找一种方法将每行保存为独立对象,同时将它们全部发送给Controller。

我所知道的:

我是ASP.NET Core的新手,但我可以放弃发送多个表单,因为我认为这是不可能的。但是,我不知道如果我发送包含在单个表单中的所有信息,如何通过每个元素进行迭代并分别保存每个元素。

设计: enter image description here

控制器:

    public async Task<IActionResult> Index()
    {
        var Tiendas = await _context.Stores.Where(t => t.Usuario == User.Identity.Name)
            .Include(t => t.Machines).ThenInclude(t=>t.MachineTypes).ThenInclude(t=>t.MachineFamilies)
            .Include(t => t.Machines).ThenInclude(t => t.Devices)
            .Include(t => t.Machines).ThenInclude(t => t.MachineTypeIncomes)
            .Include(t => t.HechosLiquidadors).ToListAsync();

        SalesIndexData Liquid = new SalesIndexData()
        {
            StoreL = Tiendas,
        };

        return View(Liquid);
    }

观点:

@model Application.Models.ApplicationviewModels.LiqIndexData

<div class="container">
    <ul class="nav nav-pills">
        @foreach (var item in Model.StoreL)
        {
            @if (item.StoreLastLiq != Model.CurrentDate)
            { 
            <li><a href="#@item.StoreID" data-toggle="tab">@item.StoreName</a></li>
            }
        }
    </ul>
    <div class="tab-content">
@foreach (var item in Model.StoreL)
{
  <form asp-action="Index" method="post">
    <div class="tab-pane fade" id="@item.StoreID">
        <table style="width:100%;" class="table table-striped table-bordered table-hover">
            <thead>
                <tr>
                    <td><div>Machine Model</div></td>
                    <td><div>Sales</div></td>
                </tr>
            </thead>
            <tbody>
                @foreach (var store in Model.StoreL.Where(s => s.StoreID == item.StoreID))
                {
                    @foreach (var machine in store.Machines)
                    {
                        @foreach (var device in machine.Devices)
                        {
                            <tr>
                                 <td>
                                     @Html.DisplayFor(modelItem => machine.CoinValue)
                                </td>
                                 <td>
                                    <div class="form-group">
                                        <div>
                                            <input id="@device.DeviceName"                                                 type="number" min="0" step="1" asp-for="@Model.SalesAmount" name="SalesAmount"  />
                                            <span asp-validation-for="@Model.SalesAmount" class="text-danger field-validation-valid"                                                data-valmsg-for="Cortesia" data-valmsg-replace="true"></span>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                        }                             
                      }
                  }
            </tbody>
        </table>
        </form>
        <div class="btn-group">
            <a id="AddLiquidacion" asp-action="Index" method="post" class="btn btn-default">
                Grabar Liquidación
            </a>
        </div>
    </div>
    }

寻找有关如何解决此问题的任何建议。我想保留设计并避免为每个Device创建单独的视图,并在可能的情况下单独保存每个视图。 JQuery可能会参与这项任务吗?

0 个答案:

没有答案