Шаблоны формирования каркасов кода (скаффолдинг)
MVC Controller with Read/Write Actions and Views, Using Entity Framework — создает контроллер с методами Index, Details, Create, Edit и Delete и представления для этих действий; добавляет код для извлечения информации из базы данных; очень полезен, так как не требуется писать соответствующий код, как в предыдущих шаблонах. Все созданные представления с используемым включенным кодом будут… Читать ещё >
Шаблоны формирования каркасов кода (скаффолдинг) (реферат, курсовая, диплом, контрольная)
При создании MVC-приложений часто требуется создавать представления для одинакового набора действий: добавления, изменения, удаления и просмотра записей из БД. В связи с этим ASP.Net MVC предоставляет возможность использовать шаблоны формирования кода (scaffolding templates). При создании контроллера (раздел 4.2.3) для заданной модели и контекста данных можно автоматически сформировать каркасы представления и контроллера, с помощью которых можно управлять записями в БД. Основными типами шаблонов формирования кода являются:
- • MVC Controller with Empty Read/Write Actions — добавляет в проект контроллер, который содержит методы Index, Details, Create, Edit и Delete; они не содержат никакого кода и необходимо самим программировать работу действий и представления для них.
- • MVC Controller with Read/Write Actions and Views, Using Entity Framework — создает контроллер с методами Index, Details, Create, Edit и Delete и представления для этих действий; добавляет код для извлечения информации из базы данных; очень полезен, так как не требуется писать соответствующий код, как в предыдущих шаблонах.
Например, если выбрать шаблон MVC Controller with Read/Write Actions and Views, Using Entity Framework, указать модель Book и контекст данных BookContext, то будет сформирован следующий код (комментарии на русском языке добавлены для пояснения):
public class BookController: Controller {.
private BookContext db = new BookContext ();
// действие для показа списка книг.
// GET: /Book/.
public ActionResult lndex () {return View (db.Books.ToList ());}.
// действие для показа информации о конкретной книге.
// GET: /Book/Details/5.
public ActionResult Details (int id = 0) {.
Book book = db.Books.Find (id);
if (book == null) {return HttpNotFound ();}.
return View (book);
}.
// действие получения формы для описания новой книги.
// GET: /Book/Create.
public ActionResult Create () {return View ();}.
// действия для сохранения в БД информации о новой книге.
// POST: /Book/Create.
[HttpPost] public ActionResult Create (Book book) {.
if (ModelState.lsValid) { db.Books.Add (book); db. SaveChanges ();
return RedirectToAction («lndex»);}.
return View (book);
}.
//действие получения формы для редактирования информации о книге.
// GET: /Book/Edit/5.
public ActionResult Edit (int id = 0) {.
Book book = db.Books.Find (id);
if (book == null) {return HttpNotFound ();}.
return View (book);
}.
// действие сохранения в БД измененной информации о книге.
// POST: /Book/Edit/5.
[HttpPost] public ActionResult Edit (Book book) {.
if (ModelState.lsValid) { db. Entry (book).State = EntityState. Modified;
db.SaveChanges (); return RedirectToActionflndex");
}.
return View (book);
}.
// действие запроса на удаление информации о книге.
// GET: /Book/Delete/5.
public ActionResult Delete (int id = 0) {.
Book book = db.Books.Find (id);
if (book == null) {return HttpNotFound ();}.
return View (book);
}.
//действие на удаление информации о книге из БД.
// POST: /Book/Delete/5 [HttpPost, ActionName («Delete»)].
public ActionResult DeleteConfirmed (int id) {.
Book book = db.Books.Find (id);
db.Books.Remove (book);
db.SaveChanges ();
return RedirectToActionflndex");
}.
//…
)))
Все созданные представления с используемым включенным кодом будут сохранены в папке Views/Book. и их можно редактировать в соответствии с требованиями приложения (например, изменить название страниц, названия автоматически формируемых ссылок и т. п.).
Если запустить проект и перейти в адресной строке браузера к данному контроллеру, то получим web-страницу, показанную на рис. 4.51.
Рис. 4.51. Результат выполнения кода, созданного с помощью скаффолдинга.