asp.net - 在 MVC 中同时更新多条记录
问题描述
尝试使用 MVC 中的表单提交来更新超过 1 条记录(将现有数据从数据库中引入视图并允许用户进行更改)。
在视图中,我可以返回尽可能多的现有记录,以便进行编辑,没有问题:
@model IEnumerable<object>
@{
List<Portal.Models.Primary_Client> PClient = Model.ToList()[0] as List<Portal.Models.Primary_Client>;
List<Portal.Models.Primary_Dependent> PDependant = Model.ToList()[1] as List<Portal.Models.Primary_Dependent>;
List<Portal.Models.Primary_AnnExp> PAnnExp = Model.ToList()[2] as List<Portal.Models.Primary_AnnExp>;
List<Portal.Models.Primary_IncExp> PIncEx = Model.ToList()[3] as List<Portal.Models.Primary_IncExp>;
List<Portal.Models.Primary_InvAssets> PInvAssets = Model.ToList()[4] as List<Portal.Models.Primary_InvAssets>;
List<Portal.Models.Primary_Liabilities> PLiabilities = Model.ToList()[5] as List<Portal.Models.Primary_Liabilities>;
List<Portal.Models.Primary_LifeAssets> PLAssets = Model.ToList()[6] as List<Portal.Models.Primary_LifeAssets>;
ViewBag.Title = "Completed Form";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("EditPLA/" + newid, "Forms", FormMethod.Post))
{
for (int i = 0; i < PLAssets.Count; i++)
{
<div class="form-group">
@Html.HiddenFor(Model => PLAssets[i].LifAsset_ID)
@Html.HiddenFor(Model => PLAssets[i].PLForm_ID)
@Html.HiddenFor(Model => PLAssets[i].Client_ID_PriFK)
</div>
<div class="container">
<div class="row">
<div class="col-sm">
@Html.Label("Asset Type")
@Html.EditorFor(Model => PLAssets[i].PLAsset_Type, new { htmlAttributes = new { @class = "form-control" } })
</div>
<div class="col-sm">
@Html.Label("Asset Amount")
@Html.EditorFor(Model => PLAssets[i].PLAmount_Per_Annum, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
</div>
<br />
}
<div class="button" style="text-align:center;">
<input type="submit" class="btn btn-success" value="Save" />
<button class="btn btn-danger" data-dismiss="modal">Cancel</button>
</div>
}
但是,当我提交表单时,我的模型没有正确填充,因为字段名称没有按预期传递并且与我的模型字段名称不匹配。我怀疑这是因为我如何使用循环创建字段。
我的编辑器字段名称如下所示:
<input class="form-control text-box single-line" id="CS___8__locals1_PLAssets_0__PLAmount_Per_Annum" name="CS$<>8__locals1.PLAssets[0].PLAmount_Per_Annum" type="text" value="3">
当我期望看到更像这样的东西时:
<input class="form-control text-box single-line" id="PLAmount_Per_Annum" name="PLAmount_Per_Annum" type="text" value="3">
我相信这比平时更难,因为我有几个模型通过一个对象传递给我的视图,但我不知道如何用正确的名称创建这些字段。
仅供参考 - 我的控制器看起来像这样:
[HttpPost]
public ActionResult EditPLA(List<Primary_LifeAssets> Assets, int id)
{
if (ModelState.IsValid)
{
foreach (var i in Assets)
{
var c = db1.Primary_LifeAssets.Where(a => a.LifAsset_ID.Equals(i.LifAsset_ID)).FirstOrDefault();
if (c != null)
{
c.PLForm_ID = i.PLForm_ID;
c.PLAmount_Per_Annum = i.PLAmount_Per_Annum;
c.PLAsset_Type = i.PLAsset_Type;
}
}
db1.Entry(Assets).State = EntityState.Modified;
db1.SaveChanges();
ViewBag.Message = "Successfully Updated.";
return RedirectToAction("Existing/" + id, "Forms");
}
ViewBag.Message = "Save failed.";
return RedirectToAction("Existing/" + id, "Forms");
}
解决方案
推荐阅读
- wildfly - Wildfly 检测数据库连接泄漏
- android - PHAuthorizationStatusLimited Flutter problem run on iOS devices
- javascript - 使用散列密码对 jwt 进行签名,而不是查询列入黑名单的令牌数据库
- c++ - MIVA API 创建的 DLL 在编译时不会注册
- android - 如何在自定义drawable中使用dp作为大小
- image - 使用python-requests从url下载图像收到错误403:禁止
- kotlin - 扫描时获得额外的空用户输入
- css - 字间距不起作用,我的目标是不是错误的 <>?
- spring - 像 GetMapping 这样的 SpringBoot 注解在内部使用 Spring AOP 吗?
- python - 在 Python 中从父目录导入模块的便携方法