Asp.net core ASP.NET:通过“更新”按钮传递寄存器ID
我正在构建这个视图,用户可以在其中编辑多个项目,并使用“更新”按钮一次保存一个项目 问题:我无法使“更新”按钮正常工作。以下是post方法:Asp.net core ASP.NET:通过“更新”按钮传递寄存器ID,asp.net-core,http-post,Asp.net Core,Http Post,我正在构建这个视图,用户可以在其中编辑多个项目,并使用“更新”按钮一次保存一个项目 问题:我无法使“更新”按钮正常工作。以下是post方法: [HttpPost, ActionName("Test")] [ValidateAntiForgeryToken] public async Task<IActionResult> TestPost(int? id) { if (id == null) {
[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");
}
return View(machinetoUpdate);
}
我在这方面有问题。ActionResult期望计算机的“id”已更新
public async Task<IActionResult> TestPost(int? id)
但是,因为我没有更新一个项目,我想我可以用更新按钮onclick发送“id”?此时按钮不起作用
这是每个按钮的代码:
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input id="@item.Id" type="submit" value="Update" class="btn btn-default" />
</div>
</div>
我怎样才能做到这一点
提前感谢是的,您需要随请求发送id。您可以为此使用JavaScript,也可以为每行使用一个单独的表单,并设置不同的目标url。id可以是路由的一部分(如/123),也可以是查询字符串(如?123)或隐藏的表单字段。Hello ssmith,谢谢您的回复。我是JS的乔恩·斯诺,所以我会尽量跳过这个。第二个选项,每行使用一个单独的表单,这意味着我必须重新执行视图并使用表单而不是表?如果“是”,您能给我一个例子,说明通过隐藏的表单字段传递“ID”会是什么样子吗?谢谢HTML表单是不可见的,因此它们是与表分开的概念。您只需将每组输入及其div元素等封装在一个。。。标签使用每个表单的action属性:action=/endpoint/1将每个表单指向特定于id的位置。对于隐藏表单,您只需为每个表单添加其中一个。