如何使用视图模型(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更新我的数据库?

如何使用视图模型(IEnumerable)在ASP.NET MVC 4中更新我的数据库

我认为首先您需要将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();