public ActionResult Delete(Todo todo)
 {
     HttpContext.Items["todoId"] = StateContext.Bag.id;
     todo = Todos.FirstOrDefault(t => t.Id == todo.Id);
     if (todo != null)
         Todos.Remove(todo);
     return View();
 }
 public ActionResult Add(TodoModel todoModel)
 {
     if (!string.IsNullOrWhiteSpace(todoModel.NewTitle))
     {
         StateContext.Bag.id = null;
         var todo = new Todo {
             Id = Id++,
             Title = todoModel.NewTitle.Trim()
         };
         Todos.Add(todo);
         HttpContext.Items["todoId"] = todo.Id;
     }
     return View();
 }
 public ActionResult Toggle(Todo todo, bool complete)
 {
     HttpContext.Items["todoId"] = StateContext.Bag.id;
     StateContext.Bag.id = null;
     todo = Todos.FirstOrDefault(t => t.Id == todo.Id);
     if (todo != null)
         todo.Completed = complete;
     return View();
 }
 public ActionResult Edit(Todo todo, bool cancel = false)
 {
     StateContext.Bag.id = null;
     var title = todo.Title;
     todo = Todos.FirstOrDefault(t => t.Id == todo.Id);
     if (todo != null && !cancel)
     {
         if (!string.IsNullOrWhiteSpace(title))
         {
             HttpContext.Items["edit"] = true;
             todo.Title = title.Trim();
         }
         else
             Todos.Remove(todo);
     }
     return View();
 }