2015-08-29 2 views
0

Как моя модель сохраняет состояние? почему так? Разве это не должно быть обновлено, так как я пытаюсь отправить новый экземпляр модели?Флажок сохраняет состояние после обратной передачи

Вот пример: Если я удалить что-нибудь на середине, после 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, поэтому моя идея заключается в том, что использование цикла для очистки каждого из моих флажков, но я не уверен, что это будет хорошо, когда дело доходит до производительности. Что мне делать?

+0

Вы не должны изменять значения своих свойств и возвращать представление. Правильный подход - следовать шаблону PRG (перенаправить на ваш метод GET) –

+0

Ooooooo я вижу. Хорошо, дайте мне попробовать. –

+0

«Если я удалю что-нибудь посередине» ... что вы подразумеваете под этим? – DarkKnight

ответ

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"); 
     } 
} 

Полный Кредиты на: Стивен Муеке для PRG pattern.

+0

Я не видел вашего ответа. Извините, но я не знал, что вы можете голосовать, даже если вопрос помечен как «duplicate». –

+0

Ahhh извините, мой вопрос был немного грязным в то время. я могу это исправить? –

+0

Хорошо, им жаль, если вы так себя чувствовали. Моя учетная запись старая, но я новичок в SO этикетках. Я буду помнить об этом в будущем. Спасибо за перенаправление и раньше (я думал, что вопрос, помеченный как дубликат, - это плохая вещь). Я ценю вашу помощь. –

0

, если вы не хотите, состояние модели сохранить это значение с точки зрения, вам не нужно передать модель в поле зрения просто изменить

возвращение View (test.Employees);

в

возвратного View();

Смежные вопросы