Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET可编辑网格:更新注册表_Asp.net_Asp.net Mvc_Asp.net Core_Http Post - Fatal编程技术网

ASP.NET可编辑网格:更新注册表

ASP.NET可编辑网格:更新注册表,asp.net,asp.net-mvc,asp.net-core,http-post,Asp.net,Asp.net Mvc,Asp.net Core,Http Post,我已经为此挣扎了一段时间了。我正在构建这个视图: 但是,当我在做了一些更改后点击“更新”按钮时,web将刷新以显示原始值 关于视图:我使用IEnumerable获取此视图,并循环遍历表单中模型中的每个项。然后,在表单内部,有一个只包含一行的表。我这样做是为了将记录中的所有项包装在一个表单中。这是代码的一部分: @foreach (var item in Model) { <form asp-action="Test" asp-route-id="@

我已经为此挣扎了一段时间了。我正在构建这个视图:

但是,当我在做了一些更改后点击“更新”按钮时,web将刷新以显示原始值

关于视图:我使用IEnumerable获取此视图,并循环遍历表单中模型中的每个项。然后,在表单内部,有一个只包含一行的表。我这样做是为了将记录中的所有项包装在一个表单中。这是代码的一部分:

@foreach (var item in Model)
        {
            <form asp-action="Test" asp-route-id="@item.Id">
                <table class="table">
                    <tbody>
                        <tr>
                            <td>
                                <input type="hidden" asp-for="@item.Id" />
                                <div class="form-group">
                                    <div class="col-md-10">
                                        <input asp-for="@item.MchName" readonly class="form-control" />
                                        <span asp-validation-for="@item.MchName" class="text-danger"></span>
                                    </div>
                                </div>
                            </td>
                            //more fields
                            <td>
                                <input type="submit" value="Update" class="btn btn-default" />
                            </td>
                         </tr>
                      </tbody>
                   </table>
                </form>}
@foreach(模型中的变量项)
{
//更多领域
}
我声明asp操作和asp路由id:

<form asp-action="Test" asp-route-id="@item.Id">

问题:这足够好吗?有什么东西不见了吗

这是Get方法:

    public async Task<IActionResult> Test()
    {
        PopulateMachineTypeDropDownListStore();
        return View(await _context.Machines.AsNoTracking().ToListAsync());
    }
公共异步任务测试()
{
PopulateMachineTypeDropDownListStore();
返回视图(wait_context.Machines.AsNoTracking().toListSync());
}
问题:我没有向控制器传递任何参数,但是视图将使用IEnumerable列出给定结构后面的项。我应该将任何内容传递给Get方法吗?或者它是这样的吗

这是Post方法:

        @model IEnumerable<Application.Models.Machine>            

        [HttpPost, ActionName("Test")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> TestPost(int? id)
        {
            if (id == null)
        {
            return NotFound();
        }
        var machinetoUpdate = await _context.Machines
            .SingleOrDefaultAsync(s => s.Id == id);
        if (await TryUpdateModelAsync(
            machinetoUpdate,
            "",
            s => s.MchName, s => s.StoreID, s => s.PUnit, s => s.Status))
        {
            try
            {
                await _context.SaveChangesAsync();

            }
            catch (DbUpdateException)
            {
                ModelState.AddModelError("", "Unable to save changes. " +
                    "Try again, and if the problem persists, " +
                    "see your system administrator.");
            }
            return RedirectToAction("Test");
        }
        PopulateMachineTypeDropDownListStore();

        return View(await _context.Machines.AsNoTracking().ToListAsync());
    }
@model IEnumerable
[HttpPost,ActionName(“测试”)]
[ValidateAntiForgeryToken]
公共异步任务TestPost(int?id)
{
if(id==null)
{
返回NotFound();
}
var machinetoUpdate=wait_context.Machines
.SingleOrDefaultAsync(s=>s.Id==Id);
如果(等待TryUpdateModelAsync(
机器更新,
"",
s=>s.MchName,s=>s.StoreID,s=>s.PUnit,s=>s.Status)
{
尝试
{
wait_context.SaveChangesAsync();
}
捕获(DbUpdateException)
{
ModelState.AddModelError(“,”无法保存更改+
请重试,如果问题仍然存在+
“请与系统管理员联系。”);
}
返回操作(“测试”);
}
PopulateMachineTypeDropDownListStore();
返回视图(wait_context.Machines.AsNoTracking().toListSync());
}
问题:我不知道是否因为我从中检索id的实体(以及我用来通过tryupdatemodelsync()更新模型的实体)也被用来与通过视图的模型进行比较,这可能无法正常工作


提前感谢您的帮助。

您的模型在更新时是否在服务器上更新?如果是这样,您的意思是视图在刷新后不会立即获得更新的值?模型不会更新。当我点击update时,唯一发生的事情是字段显示了它们在开始时拥有的数据