У меня довольно простой вид бритвы, который необходимо использовать для вопросника, который используется несколько раз, пока не заканчиваются вопросы.Флажок используется для выбора ответов, проблема в том, что когда я впервые отправляю форму, когда следующий набор вопросов вернул ответы, которые я отправляю в первый раз, они сохраняются на второй странице.Для простоты я сократил программу следующим образом:
Модель,
public class CheckBoxItemDto
{
public int Id { get; set; }
public bool Selected { get; set; }
}
public class CheckBoxModel
{
public CheckBoxModel()
{
Dtos = new List<CheckBoxItemDto>();
}
public IList<CheckBoxItemDto> Dtos { get; set; }
}
Контроллер,
public class CheckBoxController : Controller
{
public ViewResult Index()
{
CheckBoxModel model = new CheckBoxModel();
for (int i = 0; i < 5; i++)
{
model.Dtos.Add(new CheckBoxItemDto(){Id = i,Selected = true});
}
return View(model);
}
[HttpPost]
public ViewResult Index(CheckBoxModel mdl)
{
CheckBoxModel model = new CheckBoxModel();
for (int i = 5; i < 10; i++)
{
model.Dtos.Add(new CheckBoxItemDto() { Id = i, Selected = i % 2 == 0 });
}
return View(model);
}
}
Вид,
@model CheckBoxTest.Models.CheckBoxModel
@{
ViewBag.Title = "ViewPage1";
}
<h2>ViewPage1</h2>
@using (Html.BeginForm())
{
for (int i = 0; i < Model.Dtos.Count; i++)
{
@Html.DisplayFor(m => m.Dtos[i].Id)
@Html.DisplayFor(m => m.Dtos[i].Selected)
@Html.CheckBoxFor(m => m.Dtos[i].Selected)
<br/>
}
<input type="submit" value="Index" />
}
В представлении после публикации значения столбцов DisplayFor и CheckBoxFor различаются.Но должно быть то же самое.