我想在我的脑海中做一个非常简单的,但当我尝试创建时真的很复杂。在 MVC ASP.NET 环境中,我想创建一个模型但多次渲染它。这是工作,但是当我想取回数据时,我什么都没有。模型如下所示:
public class HardwareModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
...
}
包装器看起来像:
public class WrapperModel
{
public List<HardwareModel> HardwareList { get; set; }
public WrapperModel()
{
HardwareList = new List<HardwareModel>();
}
}
控制器:
readonly Hardware _hardware = new Hardware();
[Authorize]
public ActionResult Index()
{
return View(_hardware.GetHardwareList(int.Parse(Session["idEmployee"].ToString())));
}
[HttpPost]
[Authorize]
public ActionResult Index(WrapperModel model)
{
return View(model);
}
和观点:
<% using (Html.BeginForm())
{%>
<% foreach (var hardware in Model.HardwareList)
{%>
<tr>
<td>
<div class="editor-label">
<%: Html.LabelFor(m => hardware.SelectedHardwareType) %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(m => hardware.SelectedHardwareType, hardware.Hardwaretypes) %>
</div>
...
所以结果是这样的:
渲染正是我想要的,但问题是当我按下保存按钮时,使用了控制器的第二部分,但“WrapperModel 模型”的值是一个空列表。在请求值中,我可以看到所有内容都发送到控制器,但 WrapperModel 中没有任何匹配项。
我不知道该怎么做,因为“HardwareModel”的数量可以是 0 或 99,所以我无法创建 HardwareModel1、HardwareModel2 ......就像我在网上看到的那样。
感谢您对我的帮助,并为这篇长文感到抱歉。