如何使用从视图到控制器的 ViewBag 在 SQL Db 中存储多个复选框选择?
Posted
技术标签:
【中文标题】如何使用从视图到控制器的 ViewBag 在 SQL Db 中存储多个复选框选择?【英文标题】:How to Store multiple check box selection in SQL Db using ViewBag from View to Controller? 【发布时间】:2021-07-29 16:16:05 【问题描述】:如何将多选值从 ViewBag 传递到 Controller 并保存为 Db 的相应数据类型。使用我当前的代码,我可以将在 View 中选择的值带到 Action 方法,但更新后 Contoller 只保存属性选择列表中的最后一个值。
它应该以这种格式存储信息
LeaseID = 1,2,3
LeaseStatus 将存储为 Rented、Vacant、OwnerOccupied
目前它保存为 = 3(如果全选 3)
下面是我的操作方法
public ActionResult ReviewProperty(Property model, List<Leasing> LeasingStatus)
int id = model.PropId;
var uName = User.Identity.Name;
if (!ModelState.IsValid)
return View(model);
using (Db db = new Db())
Property dto = db.Properties.Find(id);
dto.OwnerName = model.OwnerName;
dto.OwnerMobNumber = model.OwnerMobNumber;
dto.AlterContactNum = model.AlterContactNum;
dto.OwnerEmail = model.OwnerEmail;
dto.PropertyStatus = model.PropertyStatus;
db.SaveChanges();
foreach(var lease in LeasingStatus)
dto.LeaseID = lease.LeaseID;
Leasing leaseDTO = db.Leasings.Where(x => x.LeaseID == dto.LeaseID).ToArray().ToList().FirstOrDefault();
dto.LeaseStatus = leaseDTO.LeaseStatus;
db.Properties.Add(dto);
db.SaveChanges();
TempData["SM"] = "Changes successfully updated!";
return RedirectToAction("MyPendingTask");
查看
@for (int i = 0; i < ViewBag.ListLease.Count; i++)
<div class="form-row">
<div class="form-check">
<input type="checkbox" id="@ViewBag.ListLease[i].LeaseStatus" name="[@i].LeaseID" value="@ViewBag.ListLease[i].LeaseID" checked="@ViewBag.ListLease[i].isChecked" />
<label class="form-check-label">
@ViewBag.ListLease[i].LeaseStatus
</label>
</div>
</div>
【问题讨论】:
【参考方案1】:您将数据保存在循环之外,以便将数据保存在循环内,这将保存您的所有数据,所有 ids
foreach (var lease in LeasingStatus)
dto.LeaseID = lease.LeaseID;
Leasing leaseDTO = db.Leasings.Where(x => x.LeaseID == dto.LeaseID).ToArray().ToList().FirstOrDefault();
dto.LeaseStatus = leaseDTO.LeaseStatus;
db.Properties.Add(dto);
db.SaveChanges();
【讨论】:
嗨@Ramesh 我确实尝试了您的解决方案,它使用选定的 LeaseID 复制 Db 中的条目,然后我只是尝试 SaveChanges() 并删除 Add(dto),但没有成功。它再次保存最后选择的 CheckBox 而不是我选择的 2。 尝试使用IEnumerable<int> yourID
我希望这对你有帮助@RS以上是关于如何使用从视图到控制器的 ViewBag 在 SQL Db 中存储多个复选框选择?的主要内容,如果未能解决你的问题,请参考以下文章