Продолжим работу с проектом из прошлой темы и определим в контроллере три метода, которые будут добавлять новый объект в базу данных и выводить из нее все объекты:
using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using MvcApp.Models; namespace MvcApp.Controllers { public class HomeController : Controller { ApplicationContext db; public HomeController(ApplicationContext context) { db = context; } public async Task<IActionResult> Index() { return View(await db.Users.ToListAsync()); } public IActionResult Create() { return View(); } [HttpPost] public async Task<IActionResult> Create(User user) { db.Users.Add(user); await db.SaveChangesAsync(); return RedirectToAction("Index"); } } }
В методе Index()
с помощью вызова db.Users.ToListAsnc()
мы будем получать объекты из бд, создавать из них список и передавать в представление.
А в post-методе Create()
при помощи вызова db.Users.Add()
для данных из объекта user формируется sql-выражение INSERT
, а вызов
db.SaveChangesAsync()
выполняет это выражение, тем самым добавляя данные в базу данных.
Далее для хранения представлений добавим в проект папку Views, в нее - папку Home. Затем в папку Views/Home добавим новое представление Create.cshtml:
@model MvcApp.Models.User <h2>Добавление пользователя</h2> <form asp-action="create" asp-controller="home"> <p> <label asp-for="Name">Имя</label><br /> <input type="text" asp-for="Name" /> </p> <p> <label asp-for="Age">Возраст</label><br /> <input type="number" asp-for="Age" /> </p> <p> <input type="submit" value="Отправить" /> </p> </form>
И также добавим в папку Views/Home представление Index.cshtml, которое будет отвечать за вывод объектов:
@model IEnumerable<MvcApp.Models.User> <h2>Список пользователей</h2> <p><a asp-action="Create">Добавить пользователя</a></p> <table class="table"> <tr><th>Имя</th><th>Возраст</th></tr> @foreach (var item in Model) { <tr> <td>@item.Name</td> <td>@item.Age</td> </tr> } </table>
И также добавим в папку Views/Home новое представление _ViewImports.cshtml:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Оно будет подключать tag-хелперы в представления.
Итоговая структура проекта:
Запустим приложение и обратимся к методу Create:
Введем в форму какие-либо данные и нажмем на копку:
После выполнения операций с данными мы можем найти автоматически сгенерированную базу данных в окне SQL Server Object Explorer и посмотреть все те данные, которые она содержит: