June 19, 2020

Создаем админ панель #1

Всех приветствую! Сегодня мы начнем писать админ панель для нашего блога

Controller

И так, начнем мы со страницы добавления новых статей в базу данных. Для этого нам нужно будет создать новый контроллер, назовем его AdminController. И пропишем в нем следующие функции.

public class AdminController : Controller
    {
        private ArticleContext adb;
        
        public AdminController(ArticleContext context)
        {
            adb = context;
        }
        
        public ActionResult Create()
        {
            return View();
        }
        
        [HttpPost]
        public async Task<IActionResult> Create(Article article)
        {
            adb.articles.Add(article);
            await adb.SaveChangesAsync();
            return RedirectToAction("Index", "Home");
        }
    }

Первая функция Create просто возвращает связанный с ней View здесь нет ничего сложного. Вторая функция это HttpPost функция( ВАЖНО ОНА ДОЛЖНА НАЗЫВАТЬСЯ ТАК ЖЕ КАК И ПЕРВАЯ ), она добавляет в бд новый экземпляр нашей модели. Потом мы сохраняем изменения и возвращаем нас на функцию Index, контроллера Home

View

Теперь напишем представления для нашего контроллера

@model Lessontg.ViewModels.ArticleViewModel

<form asp-controller="Admin" asp-action="Create" enctype="multipart/form-data" class="pr-2 pl-2">
    <div class="form-group">
        <label asp-for="article.Title" class="control-label">Заголовок</label>
        <input type="text" asp-for="article.Title" class="form-control" />
    </div>
    <div class="form-group">
        <label asp-for="article.Text" class="control-label">Текст</label>
        <textarea asp-for="article.Text" cols="100" rows="5" class="form-control"></textarea>
    </div>
    <div class="form-group">
        <label asp-for="article.Time" class="control-label">Дата</label>
        <input type="date" asp-for="article.Time" class="form-control" />
    </div>
    <div class="form-group">
        <input type="submit" value="Отправить" class="btn btn-default" style="border: solid 1px #ced4da;" />
    </div>
</form>

Если вы знакомы с Html, то эта разметка не покажется вам чем-то сложным и непонятным. А для тех кто не понимает, это форма, которая состоит из под-дивов, а они в свою очередь состоят из label`а и input`а

Можете запускать и проверять! В следующий раз напишем функцию для редактирования и удаления записей.
Удачи, программисты!