Отдельная страница статьи
Привет ребят! Сегодня мы реализуем открытие отдельной статьи, поэтому давайте приступать
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
Вуаля, у нас все работает
На сегодня все,
Удачи, программисты!