code_junkie

MVC Bulk Edit - Linq to Sql List Save

Nov 14th, 2011
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. <%
  2. using (Html.BeginForm())
  3. {
  4. %>
  5. <div id="items">
  6.  
  7. <%
  8. foreach (var task in ViewData.Model)
  9. {
  10. Html.RenderPartial(
  11. "TaskEditor",
  12. task,
  13. new ViewDataDictionary(ViewData)
  14. {
  15. {"prefix", "tasks"}
  16. }
  17. );
  18. }
  19. %>
  20.  
  21. </div>
  22.  
  23. <input type="submit" value="Save changes" />
  24.  
  25. <%
  26. }
  27. %>
  28.  
  29. <div>
  30. <%= Html.Hidden(ViewData["prefix"] + ".index", ViewData.Model.Id) %>
  31.  
  32. <% var fieldPrefix = string.Format("{0}[{1}].", ViewData["prefix"], ViewData.Model.Id); %>
  33.  
  34. <%= Html.Hidden(fieldPrefix + "Id", ViewData.Model.Id) %>
  35. Description:
  36. <%= Html.TextBox(fieldPrefix + "TaskDescription", ViewData.Model.TaskDescription)%>
  37. Date:
  38. <%= Html.TextBox(fieldPrefix + "EntryDate", ViewData.Model.EntryDate.ToString("o"))%>
  39. Completed:
  40. <%= Html.CheckBox(fieldPrefix + "IsCompleted", ViewData.Model.IsCompleted)%>
  41. </div>
  42.  
  43. [AcceptVerbs(HttpVerbs.Get)]
  44. public ActionResult BulkEdit()
  45. {
  46. var tasks = from t in db.Tasks orderby t.EntryDate descending select t;
  47.  
  48. return View(tasks.ToList());
  49. }
  50.  
  51. [AcceptVerbs(HttpVerbs.Post)]
  52. public ActionResult BulkEdit(IList<Task> tasks)
  53. {
  54. foreach(Task task in tasks)
  55. {
  56. foreach(Task dbTask in db.Tasks)
  57. {
  58. if (dbTask.Id == task.Id)
  59. {
  60. dbTask.TaskDescription = task.TaskDescription;
  61. dbTask.EntryDate = task.EntryDate;
  62. dbTask.IsCompleted = task.IsCompleted;
  63. }
  64. }
  65. }
  66.  
  67. db.SubmitChanges();
  68.  
  69. return RedirectToAction("Index");
  70. }
  71.  
  72. db.Tasks = tasks;
Add Comment
Please, Sign In to add comment