У меня есть ситуация, когда мне нужно отредактировать перечисляемое свойство в модели представления:
public class ViewModel
{
public MyObj Obj { get; set; }
public IEnumerable<MyObj> MyObjs = new List<MyObj>();
}
Я подписался на этот пост;действие контроллера:
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" />
<% } %>
И шаблон редактора в «~ / Views / Home / EditorTemplates / Obj.ascx»:
<tr>
<td><%: Html.TextBoxFor(x => x.Name) %></td>
<td><%: Html.CheckBoxFor(x => x.Value) %></td>
</tr>
Проблема: перейдите к индексу, данные отображаются.POST, и перечисляемые данные исчезают.Шаг за шагом, единственное число «Obj» в модели представления остается, поэтому исчезают только перечисляемые данные.
Я уже некоторое время смотрю на это, если кто-нибудь сможет помочьбыть блестящим.
Приветствия,
Тим.