【问题标题】:Post multiple values from inputs, loop through post array, save changes to multiple table rows dotnet core从输入中发布多个值,循环发布数组,将更改保存到多个表行 dotnet core
【发布时间】:2018-01-12 22:16:07
【问题描述】:

我在 dotnet core 的一页上显示了两个表。

  1. 第一个表只显示数据
  2. 第二个表格有一个输入字段

问题:

表格中的行数可变(此外,用户可以使用过滤器来缩小显示的数据量)。允许用户在表 2 的每一行添加一个注释,注释存储在与表 2 显示的同一个表中。

我需要遍历 post 数组并只更新已编辑的行,但我无法理解这一点。我对 dotnet core 还是比较陌生。

这是我的代码,对我已经尝试过的内容进行了更多解释:

查看:

@using ASPNET_Core_1_0.Models.TbMapViewModels;
@model TbMapViewModel
@{
}

<div class="wrapper wrapper-content animated fadeInRight">
    <div class="row">
        <div class="col-lg-6">
            <div class="row">
                <div class="col-md-12">
                    <table class="table table-condensed table-bordered table-hover">
                        <thead>
                            <tr>
                                <td><b>Expense Description</b></td>
                                <td><b>Dealership</b></td>
                                <td><b>Unique ADP Code</b></td>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach (var item in Model.TBMapUniqueADP)
                            {
                                <tr>
                                    <td>@item.ExpenseDescriptionU</td>
                                    <td>@item.DealershipU</td>
                                    <td>@item.UniqueAdpU</td>
                                </tr>
                            }
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
        <form asp-action="TbMapViewEdit">
            <div class="col-lg-6">

                    <input type="submit" value="Save" class="btn btn-primary" />

                <div class="row">
                    <div class="col-md-12">
                        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                        <table class="table table-condensed table-bordered table-hover">
                            <thead>
                                <tr>
                                    <td><b>TEMP ID</b></td>
                                    <td><b>Map To</b></td>
                                    <td><b>Accounts Code</b></td>
                                    <td><b>Line</b></td>
                                    <td><b>Map Result</b></td>
                                </tr>
                            </thead>
                            <tbody>
                                @foreach (var item in Model.TBMapBalances)
                                {

                                    <tr>
                                        <td><input asp-for="TbMapId" value="@item.TbMapId" disabled/></td>
                                        <td><input asp-for="UniqueAdp" value="@item.UniqueAdp" /></td>
                                        <td>@item.AccountsCode</td>
                                        <td>@item.Line</td>
                                        <td>@item.MapResult</td>
                                    </tr>
                                }
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </form>
    </div>
</div>

来自控制器的位:

这只是为了返回视图:

[Authorize]
public async Task<IActionResult> TbMapView()
{
    var model = new TbMapViewModel
    {
        TBMapBalances = await _context.TBMapBalances.Where(x => x.Dealership == "Derby").ToListAsync(),
        TBMapUniqueADP = await _context.TBMapUniqueADP.Where(x => x.DealershipU == "Derby").ToListAsync()
    };

    return View(model);
}

然后在 POST 上我试图写这个,但是我无法找到任何关于如何访问和循环访问 post 数组的信息。

[Authorize]
[HttpPost]
public async Task<IActionResult> TbMapViewEdit(int Id, TBMapBalances tbMapBalances)
{


    if (Id != tbMapBalances.TbMapId)
    {
        return NotFound();
    }

    if (ModelState.IsValid)
    {
        try
        {
            _context.Update(tbMapBalances);
            await _context.SaveChangesAsync();
        }

        catch (DbUpdateConcurrencyException)
        {
            if (!TbMapBalancesExists(tbMapBalances.TbMapId))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return RedirectToAction("TbMapView");
    }

    return RedirectToAction("TbMapView");
}

我知道上面的代码仅适用于您传递特定 ID 并且您有一行要编辑的情况。我试图以它为起点,例如使用List&lt;nameofthefield&gt;,这给了我很多错误。

最大的问题确实是我在这个主题上没有找到 dotnet core,这意味着这非常容易或者我非常密集。

不胜感激!

编辑#1

刚刚在 EditorTemplates 上找到了一些文章,并且会解决这些问题 - 这是正确的方法吗(有些文章适用于 asp.net 而不是 .net 核心)?

https://www.codeproject.com/Questions/768493/How-To-Add-or-Update-Multiple-Rows-And-Save-With-O

http://www.dotnetawesome.com/2013/09/how-to-update-multiple-row-at-once.html

Update multiple records at once in asp.net mvc

【问题讨论】:

    标签: c# sql .net-core


    【解决方案1】:

    我在其他问题上得到了帮助,所以如果你最终在这里寻找答案,请转到这里save-multiple-rows-simultaneously-from-the-same-form-dotnet-core

    看看鲁迪的回答和我的编辑#2

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 2012-03-20
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多