1
我有一个情况我需要在一个视图模型编辑枚举属性:编辑IEnumerable的模型属性在MVC视图
public class ViewModel
{
public MyObj Obj { get; set; }
public IEnumerable<MyObj> MyObjs = new List<MyObj>();
}
我按照this后;控制器动作:
public ActionResult Index()
{
var viewModel = new ViewModel();
viewModel.Obj = new Obj() { Name = "0", Value = true };
var o1 = new MyObj() { Name = "1", Value = false };
var o2 = new MyObj() { Name = "2", Value = false };
viewModel.Objs = new List<Obj>() { o1, o2 };
return View(viewModel);
}
[HttpPost]
public ActionResult Index(ViewModel viewModel)
{
return View(viewModel);
}
索引视图如下:
<% using (Html.BeginForm()) { %>
<table>
<tr>
<th>Name</th>
<th>Value</th>
</tr>
<%= Html.EditorFor(x => x.Objs) %>
</table>
<br />
<input type="submit" value="Submit" />
<% } %>
而在 “〜/查看/主页/ EditorTemplates/Obj.ascx” 编辑模板:
<tr>
<td><%: Html.TextBoxFor(x => x.Name) %></td>
<td><%: Html.CheckBoxFor(x => x.Value) %></td>
</tr>
的问题是:浏览到索引,数据显示出来。 POST和可枚举数据消失。逐步浏览,视图模型中的单数“Obj”仍然存在,因此它只是可消失的可枚举数据。
我一直在盯着这个一段时间,如果有人能帮上忙,那就太棒了。
干杯,
Tim。
我能够在这篇文章中发现的唯一区别是使用“for”语句。这不会产生任何不同的HTML或任何不同的结果。 – Hanshan
您是否检查过在您的视图中生成的HTML?所有的Obj编辑器都有相同的名称/编号吗?它们应该使用索引器生成(即'') –
再次感谢您的帮助,Stephen。不幸的是,它们似乎是正确的 - 例如名称=“MyObjs [0] .Name”和“MyObjs [1] .Name” - 因此我不知道! – Hanshan