Low*_*can 2 c# razor asp.net-mvc-3
我有一个相当简单的剃刀视图,需要用于问卷调查,在问题用完之前反复使用.复选框用于选择答案,问题是当我第一次提交表单时,下一组问题返回我第一次提交的答案将保留在第二页.为简单起见,我将程序简化如下,
模型,
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" /> 
}  
在post之后的视图中,DisplayFor和CheckBoxFor列值不同.但它应该是一样的.
Dan*_*ous 10
通过它的声音,ModelState当您返回视图时,您仍然保持其先前的值.尝试清除ModelState您的帖子操作:
ModelState.Clear();
CheckBoxModel model = new CheckBoxModel();
...