Отдельная страница статьи
Привет ребят! Сегодня мы реализуем открытие отдельной статьи, поэтому давайте приступать
Controller
Как всегда начнем с контроллера, здесь нужно написать скрипт в HomeController. Он просто выбирает определенный пост из базы данных опираясь на Id.
public async Task<IActionResult> Post(int? id) { if (id != null) { Article article = adb.articles.FirstOrDefault(p => p.Id == id); if (article != null) return View(article); } return NotFound(); }
То есть в функцию передается id, который мы получим благодаря аргументу asp-route-id. Его мы уже прописали в файле Index в заголовке поста( если вы все делали по урокам, у вас это есть )
View
Теперь нам нужно создать новый файл в папке Views -> Home. Его мы назовем Post
@model Lessontg.Models.Article; @{ ViewBag.Title = Model.Title; } <article class="mb-4"> <div> <h2 class="pt-2" style="color: black; text-align: center;">@Html.DisplayFor(model => model.Title)</h2> @foreach (string s in Model.Text.Split('\n')) { <p class="p-2">@s</p> } </div> </article>
Тут стоит заострить внимание на цикле foreach, он используется для того чтобы разделить текс на параграфы и каждый параграф вывести в отдельном <p></p>.
Теперь откроем файл Index.cshtml и допишем два аргумента в строчку ссылки заголовка, она должна выглядеть следующим образом
<a style="text-decoration: none;" asp-controller="Home" asp-action="Post" asp-route-id="@article.Id" class="text-dark"><h3 class="pb-1">@article.Title</h3></a>
И так, мы указали контроллер и функцию которые осуществляют это действие. А аргумент asp-route-id="@article.Id" передает функции именно этот Id
Вуаля, у нас все работает
На сегодня все,
Удачи, программисты!