{WV_DeviceReg, WV_DevEventLog, WV_DevSystemLog, WV_DeviceConfig}
是我的ADO.NET實體框架模型。如何在ASP.NET MVC 4中使用viewmodel(IEnumerable)更新我的數據庫
視圖模型
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 }
FieldName的映射關鍵字FieldValue的映射值
問:如何使用foreach
更新我的數據庫?
我很想試着回答說:「斯蒂芬Muecke k否則回答「 – 2014-11-05 04:08:40
由於'viewModels'的所有屬性在回發時都將爲空,因此我們首先解決該問題。您需要爲每種類型使用'EditorTemplate'或使用'for'循環來呈現您的控件(並將集合從'IEnumerable'更改爲'IList')。 [這個答案](http://stackoverflow.com/questions/26571133/controller-action-methods-model-parameter-is-empty-when-form-submit/26571182#26571182)解釋了這個問題。 (LOL @AbdulAhmad) – 2014-11-05 04:17:50