如何使用视图模型(IEnumerable)在ASP.NET MVC 4中更新我的数据库
本文关键字:MVC NET 更新 数据库 我的 ASP 视图 何使用 模型 IEnumerable | 更新日期: 2023-09-27 18:29:20
{WV_DeviceReg, WV_DevEventLog, WV_DevSystemLog, WV_DeviceConfig}
是我在ADO.NET实体框架中的模型。
ViewModel
namespace MvcWebVms.Models
{
public class HomeViewModels
{
public IEnumerable<WV_DeviceReg> DeviceReg { get; set; }
public IEnumerable<WV_DevEventLog> DevEventLog { get; set; }
public IEnumerable<WV_DevSystemLog> DevSystemLog { get; set; }
public IEnumerable<WV_DeviceConfig> DeviceConfig { get; set; }
}
}
查看
@model MvcWebVms.Models.HomeViewModels
@using (Html.BeginForm()){
<div>
@foreach (var item in Model.DeviceConfig) {
@Html.HiddenFor(modelItem => item.FieldName)
@Html.HiddenFor(modelItem => item.DeviceID_F)
<div class="editor-label">
@Html.DisplayFor(modelItem => item.FieldName)
</div>
<div class="editor-field">
@Html.EditorFor(modelItem => item.FieldValue)
</div>
}
<input type="submit" value="Apply" />
</div>
}
控制器
public ActionResult Setting(string id)
{
HomeServices service = new HomeServices();
return View(service.GetDeviceSettingAT(id));
}
public WVDBEntities wvdb = new WVDBEntities();
[HttpPost]
public ActionResult Setting(HomeViewModels viewModels)
{
if (ModelState.IsValid)
{
foreach (????????????)
{
????????????????
}
wvdb.SaveChanges();
return View(viewModels);
}
else
{
return View();
}
}
表
WV_DeviceConfig { FieldName(PK), DeviceID_F(PK), FieldValue, ServerTime }
FieldValue 的FieldName映射值的密钥
Q: 请问如何使用foreach
更新我的数据库?
我认为首先您需要将foreach循环更改为传统的for循环,并返回一个列表,如下所示:
@for (int i = 0; i < Model.DeviceConfig.Count(); i ++) {
@Html.HiddenFor(m => m.DeviceConfig[i].FieldName)
//etc.. same thing for all hidden/input fields
你的行动方法可以接受这样的列表
[HttpPost]
public ActionResult Setting(List<DeviceConfig> DeviceConfigList)
然后您可以执行以下操作来更新数据库
foreach (var item in DeviceConfigList)
{
db.Entry(item).State = EntityState.Modified;
}
db.SaveChanges();