c# - 如何使用复选框更新实体框架中的记录
问题描述
我正在尝试使用 EF 更新记录。在我看来,我使用复选框来更新多条记录。我有 2 个问题 1)如何将编辑后的文本框值从视图传递到控制器并更新这些值?2)每次我编辑并更新它时,它都会添加旧数据而不是更新现有数据。
看法 :
@if (Model.Count > 0)
{
<div>
@foreach (var books in Model)
{
<div class="col-md-2">
@Html.EditorFor(model => books.caption)
@Html.ValidationMessageFor(model => books.caption)
</div>
<div class="col-md-2">
@Html.EditorFor(model => books.copies)
@Html.ValidationMessageFor(model => photos.copies)
</div>
<div class="col-md-1">
<input type="checkbox" class="checkboxes" value="@books.id" name="id" />
</div>
}
</div>
}
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" name="submitButton" value="UPDATE" />
<input type="submit" name="submitButton" value="ADD"/>
<input type="submit" name="submitButton" value="DELETE" />
</div>
</div>
控制器 :
public ActionResult EditBooks(int id, IEnumerable<int> id, string submitButton, [Bind(Include = "id,caption,copies")] Books books)
{
if (ModelState.IsValid)
{
try
{
foreach (var item in id)
{
var update = _db.Books.FirstOrDefault(s => s.id == item);
if (update != null)
{
_db.MyTable.Add(update);
_db.SaveChanges();
}
return RedirectToAction("Edit", new {id});
}
}
}
}
解决方案
根据您的逻辑,您将添加新记录而不是更新。你可以分析这段代码:
_db.MyTable.Add(update);
根据实体框架逻辑,您将更新项放入添加EF 操作集合。因此,要修复它,您需要将那段代码修改为:
_db.MyTable.Update(update);
推荐阅读
- r - 使用数据值(字典)。R中的数据帧和重新编码
- swift - 如何从字符串数组生成自定义文本字段,每个字符串都有自己的编辑/删除控件?
- r - mlogit :在 R 中使用不同的 mlogit 替代方案
- python - 带有新 m1 芯片的 MacOS 上的 pip 安装问题
- javascript - 虫洞中的下拉列表
- javascript - Gatsby (gatsby-source-strapi) - 您的数据问题中存在冲突的字段类型
- d3.js - D3plus 线图上的多个形状注释
- reactjs - 使用 React Native 的增强现实应用程序
- java - 无法调用“org.apache.poi.ss.usermodel.Cell.setCellValue(String)”,因为现有 XLSM 文件的“cell”为空
- r - 对 R 相当陌生,谁能告诉我查询之间的区别?