gpt4 book ai didi

c# - 如何使用 viewmodel (IEnumerable) 在 ASP.NET MVC 4 中更新我的数据库

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:00 24 4
gpt4 key购买 nike

{WV_DeviceReg、WV_DevEventLog、WV_DevSystemLog、WV_DeviceConfig} 是我来自 ADO.NET Entity Framework 的模型。

View 模型

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>
}

Controller

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 }

FieldName 的Key 映射FieldValue 的值

问:请问如何使用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();

关于c# - 如何使用 viewmodel (IEnumerable) 在 ASP.NET MVC 4 中更新我的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26749485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com