рдпрд╣ рдЗрдХрд╛рдИ рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ ASP.NET MVC 3 рд╡рд┐рдХрд╛рд╕ рд▓реЗрдЦ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИред рдЖрдк рдирд┐рдореНрди рд▓рд┐рдВрдХ рдкрд░ рдкрд╣рд▓рд╛ рдЕрдзреНрдпрд╛рдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
ASP.NET MVC рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдлреНрд░реЗрдорд╡рд░реНрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдирд╛рдирд╛ ред
рдкрд┐рдЫрд▓реЗ рдкрд╛рда рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдПрдорд╡реАрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдЬреЛ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рдХреЙрдореНрдкреИрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо CRUD (рдХреНрд░рд┐рдПрдЯ, рд░реАрдб, рдЕрдкрдбреЗрдЯ, рдбрд┐рд▓реАрдЯ) рдлрдВрдХреНрд╢рдирд▓рд┐рдЯреА рдХреЛ рдмрдирд╛рддреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ MVC рд╕реНрдХреИрдлреЛрд▓реНрдбрд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рд╡реНрдпреВрдЬ рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИред
рдиреЛрдЯ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдкрд░рдд рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдореВрд░реНрдд рдкрд░рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА" рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрдо рдмрд╛рдд рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдж рдореЗрдВ, рдмрд╛рдж рдХреЗ рдкрд╛рдареЛрдВ (
рдХрд╛рд░реНрдп рдкреИрдЯрд░реНрди рдХреЗ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдФрд░ рдпреВрдирд┐рдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ ) рдореЗрдВ рд╣реЛрдЧрд╛ред
рдЗрд╕ рдкрд╛рда рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреГрд╖реНрда рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ:




рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрда рдмрдирд╛рдирд╛
рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрда HTML рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдирд░реЛрд▓рдореЗрдВрдЯреНрд╕ рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ \ рд╡рд┐рджреНрдпрд╛рд░реНрдереАрдХрдВрдЯреНрд░реЛрд▓рд░ ред рд╡рд┐рд╡рд░рдг рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд╕реАрдПрд╕ рд╡рд┐рдзрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИ:
public ViewResult Details(int id) { Student student = db.Students.Find(id); return View(student); }
рдЦреЛрдЬ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдЖрдИрдбреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдЫрд╛рддреНрд░ рдЗрдХрд╛рдИ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдИрдбреА рдорд╛рди рд▓рд┐рдВрдХ рдХреЗ рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрда рдкрд░ рд╕реНрдерд┐рдд рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЦреБрд▓реЗ
рджреГрд╢реНрдп \ рдЫрд╛рддреНрд░ \ рд╡рд┐рд╡рд░рдг ред Cshtml ред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ DisplayFor рд╕рд╣рд╛рдпрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
<div class="display-label">LastName</div> <div class="display-field"> @Html.DisplayFor(model => model.LastName) </div>
рдирд╛рдорд╛рдВрдХрди рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд╛рдорд╛рдВрдХрди рдлрд╝реАрд▓реНрдб рдЯреИрдЧ рд╕реЗ рдкрд╣рд▓реЗ EnrolmentDate рдлрд╝реАрд▓реНрдб рдХреЗ рдмрд╛рдж рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
<div class="display-label"> @Html.LabelFor(model => model.Enrollments) </div> <div class="display-field"> <table> <tr> <th>Course Title</th> <th>Grade</th> </tr> @foreach (var item in Model.Enrollments) { <tr> <td> @Html.DisplayFor(modelItem => item.Course.Title) </td> <td> @Html.DisplayFor(modelItem => item.Grade) </td> </tr> } </table> </div>
рдпрд╣ рдХреЛрдб рдПрдирд░реЛрд▓рдореЗрдВрдЯреНрд╕ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ рдирд╛рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд╛рдареНрдпрдХреНрд░рдо рдФрд░ рдЧреНрд░реЗрдб рдХрд╛ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреЛрд░реНрд╕ рдХрд╛ рдирд╛рдо рджрд╛рдЦрд┐рд▓рд╛ рдЗрдХрд╛рдИ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдирд┐рд╣рд┐рдд рдкрд╛рдареНрдпрдХреНрд░рдо рдЗрдХрд╛рдИ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдиреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП
рдЙрддреНрд╕реБрдХ рд▓реЛрдбрд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдЙрддреНрд╕реБрдХ рд▓реЛрдбрд┐рдВрдЧ
рд░реАрдбрд┐рдВрдЧ рд░рд┐рд▓реЗрдЯреЗрдб рдбреЗрдЯрд╛ ред)
рд╕реНрдЯреВрдбреЗрдВрдЯреНрд╕ рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░
рдбрд┐рдЯреЗрд▓реНрд╕ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдХреНрд░рд┐рдПрдЯ рдкреЗрдЬ рдмрдирд╛рдирд╛
рдирд┐рдпрдВрддреНрд░рдХреЛрдВ \ StudentController.cs рдореЗрдВ ,
HttpPost рдмрдирд╛рдПрдБ рд╡рд┐рдзрд┐ рдХреЛрдб рдмрджрд▓реЗрдВ:
[HttpPost] public ActionResult Create(Student student) { try { if (ModelState.IsValid) { db.Students.Add(student); db.SaveChanges(); return RedirectToAction("Index"); } } catch (DataException) { //Log the error (add a variable name after DataException) ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); } return View(student); }
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо ASP.NET MVC рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЫрд╛рддреНрд░ рдЗрдХрд╛рдИ рдХреЛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рдВрдЧрдд рд╕реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред (
рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд░ ASP.NET MVC рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдлреЙрд░реНрдо рд╕реЗ рдЖрдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд░ рдлреЙрд░реНрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╛рддреНрд░ рдЗрдХрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлреЙрд░реНрдо рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпред)
рдЯреНрд░рд╛рдЗ-рдХреИрдЪ рдмреНрд▓реЙрдХ рд╣рдорд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рд╣реИ рдФрд░ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рдХрд┐рд╕реА DataException рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдЪреАрдЬ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрд╕ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ
рджреГрд╢реНрдп \ рдЫрд╛рддреНрд░ \ рдмрдирд╛рдПрдБ ред cshtml рд╡рд┐рд╡рд░рдг рд╕реЗ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИ
ред EditorFor рдФрд░ ValidationMessageFor рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде cshtml, DisplayFl рд╣реЗрд▓реНрдкрд░ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
<div class="editor-label"> @Html.LabelFor(model => model.LastName) </div> <div class="editor-field"> @Html.EditorFor(model => model.LastName) @Html.ValidationMessageFor(model => model.LastName) </div>
рдореЗрдВ
рдмрдирд╛рдПрдБ ред cshtml рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕реНрдЯреВрдбреЗрдВрдЯреНрд╕ рдЯреИрдм рдкрд░ рдФрд░
рдХреНрд░рд┐рдПрдЯ рдиреНрдпреВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИред рдирд╛рдо рдФрд░ рдХреБрдЫ рдЧрд▓рдд рддрд╛рд░реАрдЦ рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдПрдБ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдЦрд░рд╛рдм рдбреЗрдЯрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджрд┐рдирд╛рдВрдХ рдХреЛ рд╕рд╣реА 9/1/2005 рдкрд░ рдмрджрд▓реЗрдВ рдФрд░
рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдкрд░ рдирдП рдЫрд╛рддреНрд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
рдмрдирд╛рдПрдБ рдкрд░ рдХреНрд▓рд┐рдХ
рдХрд░реЗрдВ ред

рдПрдбрд┐рдЯ рдкреЗрдЬ рдмрдирд╛рдПрдВ
рдирд┐рдпрдВрддреНрд░рдХреЛрдВ \ StudentController.cs рдореЗрдВ, HttpGet рд╕рдВрдкрд╛рджрди рд╡рд┐рдзрд┐ (HttpPost рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ) рдЪрдпрдирд┐рдд рдЫрд╛рддреНрд░ рдЗрдХрд╛рдИ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
HttpPost рдПрдбрд┐рдЯ рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдирд┐рдореНрди рдХреЛрдб рд╕реЗ рдмрджрд▓реЗрдВ:
[HttpPost] public ActionResult Edit(Student student) { try { if (ModelState.IsValid) { db.Entry(student).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } } catch (DataException) {
HttpPost Create рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб рд╕рдорд╛рди рдерд╛, рд▓реЗрдХрд┐рди рд╕реЗрдЯ рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдХреЛрдб рдПрдХ рдЗрдХрд╛рдИ рдЧреБрдг рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред SaveChanges рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐ Entity рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рднреА рдХреЙрд▓рдо рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЫреБрдЖ рдирд╣реАрдВ рд╣реИред рд╕рдорд╕рд╛рдордпрд┐рдХ рдореБрджреНрджреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХреА рдЬрд╛рддреА рд╣реИред (рдЖрдк
рдХрдВрд╕реЙрд▓рд┐рдбреЗрдЯрд┐рдВрдЧ рдХрдВрд╕реАрдбрд░ рдореЗрдВ рдХрдВрд╕рд░реНрдЯ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред)
рдПрдВрдЯрд┐рдЯреА рд╕реНрдЯреЗрдЯреНрд╕ рдФрд░ рдЕрдЯреИрдЪ рдФрд░ рд╕реЗрд╡рдЪреЗрдВрдЬ рдореЗрдердбреНрд╕
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ SaveChanges рд╡рд┐рдзрд┐ рдХреЛ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрдб рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕ рдЗрдХрд╛рдИ рдХреА рд╕реНрдерд┐рддрд┐ рдЬреЛрдбрд╝рдХрд░ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рддрдм, рдЬрдм SaveChanges рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрджрд░реНрдн SQL INSERT рдХреНрд╡реЗрд░реА рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЗрдХрд╛рдИ рд░рд╛рдЬреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИрдВред SaveChanges рд╡рд┐рдзрд┐ рдПрдХ INSERT рдЕрдиреБрд░реЛрдз рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред
- рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рддред SaveChanges рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдЗрдХрд╛рдИ рдореЗрдВ рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдЬрдм рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╕рдВрд╢реЛрдзрд┐рддред рдЗрдХрд╛рдИ рдЧреБрдг рдорд╛рди рдмрджрд▓ рджрд┐рдП рдЧрдП рд╣реИрдВ, SaveChanges рдПрдХ UPDATE рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
- рд╣рдЯрд╛рдП рдЧрдПред рдПрдХ рдЗрдХрд╛рдИ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, SaveChanges рдПрдХ DELETE рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдкреГрдердХред рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЗрдХрд╛рдИ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред
рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдЖрдк рдЗрдХрд╛рдИ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд░рд╛рдЬреНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред SaveChanges рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, Entity Framework рдПрдХ рдЕрджреНрдпрддрди SQL рдХреНрд╡реЗрд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдЧреБрдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдорд╛рди рдмрджрд▓ рдЧрдП рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрдХрд╛рдИ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдг рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм HttpPost рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрджрд░реНрдн рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрдХрд╛рдИ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЬрдм SaveChanges рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Entity Framework рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рднреА рдХреЙрд▓рдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрджрд░реНрдн рдХреЛ рдЕрдм рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЧреБрдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрджрд▓ рджрд┐рдП рдЧрдП рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдЕрдкрдбреЗрдЯ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдВрдкрд╛рджрд┐рдд рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд┐рд╕реА рддрд░рд╣ HttpPost рдПрдбрд┐рдЯ рдХреЙрд▓ рдХреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдХрд░ рдореВрд▓ рдорд╛рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЫрд┐рдкреЗ рд╣реБрдП рдлрд╝реЙрд░реНрдо рдлрд╝реАрд▓реНрдб) рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдЖрдк рдореВрд▓ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЫрд╛рддреНрд░ рдЗрдХрд╛рдИ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрдХрд╛рдИ рдХреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдЯреИрдЪ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрдХрд╛рдИ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ SaveChanges рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП,
рдРрдб / рдЕрдЯреИрдЪ рдФрд░ рдПрдВрдЯрд┐рдЯреА рд╕реНрдЯреЗрдЯреНрд╕ рдФрд░ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ
рд▓реЛрдХрд▓ рдбреЗрдЯрд╛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рджреЗрдЦреЗрдВред
рдХреЛрдб рдореЗрдВ
рджреГрд╢реНрдп \ рдЫрд╛рддреНрд░ \ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ред cshtml Create рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИ
ред cshtml , рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕реНрдЯреВрдбреЗрдВрдЯреНрд╕ рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░
рдПрдбрд┐рдЯ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ
рдХрд░реЗрдВ ред

рдорд╛рди рдмрджрд▓реЗрдВ рдФрд░
рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ
рдХрд░реЗрдВ ред

рдбрд┐рд▓реАрдЯ рдкреЗрдЬ рдмрдирд╛рдПрдВ
рдирд┐рдпрдВрддреНрд░рдХреЛрдВ \ StudentController.cs рдореЗрдВ, HttpGet рд╣рдЯрд╛рдПрдБ рд╡рд┐рдзрд┐ рдЪрдпрдирд┐рдд рдЫрд╛рддреНрд░ рдЗрдХрд╛рдИ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рд╡рд░рдг рдФрд░ рдкреВрд░реНрд╡ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрджрд┐ SaveChanges рдХреЙрд▓ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡рд┐рдзрд┐ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рджреГрд╢реНрдп рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдкрдбреЗрдЯ рдФрд░ рдСрдкрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде, рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрд╢рди рдХреЛ рднреА рджреЛ рддрд░реАрдХреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рджреГрд╢реНрдп рджрд┐рдЦрд╛рддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдпрд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ HttpPost Delete рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ HttpPost Delete рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдпрд╛рд╕-рдХреИрдЪ рдЕрдкрд╡рд╛рдж рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ HttpPost Delete рд╡рд┐рдзрд┐ HttpGet Delete рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдпрд╣ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИред HttpGet Delete рд╡рд┐рдзрд┐ рдлрд┐рд░ рд╕реЗ рдПрдХ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдкреГрд╖реНрда рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдкрд╛рда рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП HttpGet Delete рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдирд┐рдореНрди рдХреЛрдб рд╕реЗ рдмрджрд▓реЗрдВ:
public ActionResult Delete(int id, bool? saveChangesError) { if (saveChangesError.GetValueOrDefault()) { ViewBag.ErrorMessage = "Unable to save changes. Try again, and if the problem persists see your system administrator."; } return View(db.Students.Find(id)); }
рдпрд╣ рдХреЛрдб рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмреВрд▓рд┐рдпрди рдкреНрд░рдХрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред HttpPost Delete рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж HttpGet Delete рдФрд░ рдЯреНрд░реВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╢реВрдиреНрдп (рдЧрд▓рдд) рд╣реИред
рдирд┐рдореНрди рдХреЛрдб рдХреЗ рд╕рд╛рде HttpPost Delete (DeleteConfirmed) рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдмрджрд▓реЗрдВ рдЬреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ:
[HttpPost, ActionName("Delete")] public ActionResult DeleteConfirmed(int id) { try { Student student = db.Students.Find(id); db.Students.Remove(student); db.SaveChanges(); } catch (DataException) { //Log the error (add a variable name after DataException) return RedirectToAction("Delete", new System.Web.Routing.RouteValueDictionary { { "id", id }, { "saveChangesError", true } }); } return RedirectToAction("Index"); }
рдХреЛрдб рдЪрдпрдирд┐рдд рдЗрдХрд╛рдИ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрдХрд╛рдИ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рдЯрд╛рдП рдЧрдП рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред SaveChanges рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдПрдХ SQL DELETE рдХреНрд╡реЗрд░реА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
рдпрджрд┐ рдкреНрд░рджрд░реНрд╢рди рдПрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдирд╛рд╡рд╢реНрдпрдХ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдмрджрд▓рдХрд░ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ:
Student studentToDelete = new Student() { StudentID = id }; db.Entry(studentToDelete).State = EntityState.Deleted;
рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде, рд╣рдо рдХреЗрд╡рд▓ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╛рддреНрд░ рдЗрдХрд╛рдИ рдХреЛ рддреБрд░рдВрдд рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрдХрд╛рдИ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рдЯрд╛рдП рдЧрдП рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЗрдХрд╛рдИ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, HttpGet Delete рд╡рд┐рдзрд┐ рдбреЗрдЯрд╛ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреА рд╣реИред рдЬреАрдИрдЯреА рдЕрдиреБрд░реЛрдз (рдпрд╛, рд╕рдВрдкрд╛рджрди, рдирд┐рд░реНрдорд╛рдг, рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ) рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЙрд▓реНрд▓рдВрдШрди рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП,
ASP.NET MVC рдЯрд┐рдк # 46 рджреЗрдЦреЗрдВ - рд╣рдЯрд╛рдПрдБ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реНрдЯреАрдлрди рд╡рд╛рд▓реНрдерд░ рдХреЗ рдмреНрд▓реЙрдЧ рдкрд░
рд╕реБрд░рдХреНрд╖рд╛ рдЫреЗрдж рдмрдирд╛рддреЗ рд╣реИрдВ ред
рджреГрд╢реНрдп \ рдЫрд╛рддреНрд░ \ рд╣рдЯрд╛рдПрдБ рдореЗрдВ ред cshtml h2 рдФрд░ h3 рдХреЗ рдмреАрдЪ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
<p class = "error"> @ ViewBag.ErrorMessage </ p>
рдЫрд╛рддреНрд░ рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░
рдбрд┐рд▓реАрдЯ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:
рд╣рдЯрд╛рдПрдБ рдкрд░ рдХреНрд▓рд┐рдХ
рдХрд░реЗрдВ ред рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЫрд╛рддреНрд░ рдХреЗ рдмрд┐рдирд╛ рд╣рдордиреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ (рдЖрдк
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХрд╛рдВрдЙрдЯрд░ рдкрд╛рда рдореЗрдВ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВрдЧреЗред)
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рдЦреБрд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИ
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рднреА рдХрдиреЗрдХреНрд╢рди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдВрдж рдереЗ рдФрд░ рдЙрдирдХреЗ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рдирд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк рд╕реНрдЯреВрдбреЗрдВрдЯрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рд╕реНрдЯреВрдбреЗрдВрдЯрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреНрд▓рд╛рд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбрд┐рд╕реНрдкреЛрдЬрд▓ рд╡рд┐рдзрд┐ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
ред рд╕реАрдПрд╕ :
protected override void Dispose(bool disposing) { db.Dispose(); base.Dispose(disposing); }
рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрдЗрдбреАрд╕реЛрдкрд╛рдпрд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдб рдХреЗрд╡рд▓ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдкреЛрдЬрд╝ (рдмреВрд▓) рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдЫрд╛рддреНрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ CRUD рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рдкрд╛рда рдореЗрдВ, рд╣рдо рдЫрдБрдЯрд╛рдИ рдФрд░ рдкреГрд╖реНрдард╛рдВрдХрди рдЬреЛрдбрд╝рдХрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдкреГрд╖реНрда рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдмреЗрд▓реЛрдЯреЗрд░реНрд╕рдХреЛрд╡рд╕реНрдХреА (
рдПрд╣рд░рд┐рдорди ) рдХреЗ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред