复选框在回发后保留状态

时间:2015-08-29 06:39:31

标签: asp.net asp.net-mvc

为什么我的模特会保留这个州?为什么会这样? 是不是应该刷新,因为我试图发送一个全新的模型实例?

这是一个例子: 如果我在postback之后删除了中间的任何内容,则仍会选中该复选框

enter image description here

以下是我的代码:

这是我的回发代码:

  [HttpPost]
    public ActionResult Index(IEnumerable<Employee> emp)
    {
        EmployeeContext test = new EmployeeContext();
        if (emp.Count(x => x.selected) == 0)
        {           
            return View(test.Employees);
        }
        else
        {

            foreach (Employee del in emp)
            {
                if (del.selected)
                {
                    Employee dummy = test.Employees.Single(x => x.id == del.id);
                    test.Employees.Remove(dummy);
                    test.SaveChanges(); 
              }
          }

          return View(test.Employees);
      }
 }

如何删除该状态?我读了一些关于ModelState.Remove的内容,所以我的想法是使用一个循环清除我的每个复选框,但我不确定这在性能方面是否会很好。我该怎么办?

2 个答案:

答案 0 :(得分:0)

通过将其更改为Redirect来修复:

[HttpPost]
    public ActionResult Index(IEnumerable<Employee> emp)
    {
        EmployeeContext test = new EmployeeContext();
        if (emp.Count(x => x.selected) == 0)
        {
           return RedirectToAction("Index");
        }
        else
        {

            foreach (Employee del in emp)
            {
                if (del.selected)
                {
                    Employee dummy = test.Employees.Single(x => x.id == del.id);
                    test.Employees.Remove(dummy);
                    test.SaveChanges(); 
                }
            }

            return RedirectToAction("Index");
        }
}

完全致电:Stephen {Muecke PRG pattern

答案 1 :(得分:0)

如果您不希望模型状态在视图中保留其值,则不需要将模型传递到视图中 只需改变这个

  

return View(test.Employees);

  

返回View();