Согласно предоставленному вами руководству, я сделал демо для тестирования, и оно хорошо обновило данные.Ниже приведен рабочий пример, к которому можно обратиться и внести изменения в соответствии с вашими потребностями.
Модель
public class Description
{
public int Id { get; set; }
public string Display { get; set; }
}
Контроллер
public IActionResult Index(int? id)
{
ViewBag.Operation = id;
ViewBag.Name = _context.Description.ToList();
Description description= _context.Description.Find(id);
return View(description);
}
public ActionResult Update(Description description)
{
if (ModelState.IsValid)
{
_context.Entry(description).State = EntityState.Modified;
_context.SaveChanges();
}
return RedirectToAction("Index", new { id = 0 });
}
Index.cshtml , вы должны скрыть идентификатор измененных данных в разделе модификации.
@model WebApplication1.Models.Description
@using (Html.BeginForm("Update", "Home", FormMethod.Post))
{
@foreach (var item in (IEnumerable<WebApplication1.Models.Description >)ViewBag.Name)
{
<div class="form-group">
<div class="col-md-10">
@Html.EditorFor(modelItem => item.Display, new { htmlAttributes = new { @class = "form-control" } })
@Html.HiddenFor(modelItem => item.Id, new { id = item.Id })
</div>
</div>
@Html.ActionLink("Edit", "Index", new { id = item.Id })
}
// Create or Update data
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true)
<fieldset>
<legend> <b>Entry Screen</b></legend>
<div class="form-group">
@Html.LabelFor(model => model.Display, new { @class = "control-label col-md-2" })
@Html.HiddenFor(model => model.Id)
<div class="col-md-10">
@Html.EditorFor(model => model.Display)
@Html.ValidationMessageFor(model => model.Display)
</div>
</div>
<div class="form-group">
<p>
<input type="submit" value="Create" name="Create"
style=@((ViewBag.Operation != null && Convert.ToInt32(ViewBag.Operation) > 0) ? "display:none" : "display:block") />
<input type="submit" value="Update" name="Update"
style=@((ViewBag.Operation != null && Convert.ToInt32(ViewBag.Operation) > 0) ? "display:block" : "display:none") />
</p>
</div>
</fieldset>
</div>
}