J1: Admin/Styles/Create #64:

- Création de StyleCreateViewModel
- Création de la vue create
- Integration du create dans le controller
This commit is contained in:
b.nodon
2026-03-06 11:50:15 +01:00
parent d7fa7b6cc4
commit 9002836da0
3 changed files with 95 additions and 0 deletions

View File

@@ -64,6 +64,35 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
return View(viewModel); return View(viewModel);
} }
// GET: Administration/Styles/Create
public ActionResult Create()
{
return View();
}
// POST: Administration/Styles/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(StyleCreateViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
try
{
_logger.LogInformation("Nouveau style créé : {Libelle}", model.Libelle);
return RedirectToAction(nameof(Index));
}
catch (Exception e)
{
_logger.LogError(e, "Erreur lors de la création du style");
ModelState.AddModelError("", "Une erreur est survenue lors de la création.");
return View(model);
}
}
// GET: Administration/Styles/Delete/5 // GET: Administration/Styles/Delete/5
public ActionResult Delete(int id) public ActionResult Delete(int id)

View File

@@ -0,0 +1,20 @@
// <copyright file="StyleDeleteViewModel.cs" company="Webzine">
// Copyright (c) Webzine. Tout droit réservé.
// </copyright>
namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
{
/// <summary>
/// ViewModel pour la création d'un style en administration.
/// </summary>
public class StyleCreateViewModel
{
/// <summary>
/// Obtient ou définit le libellé du style.
/// </summary>
public string Libelle { get; set; }
}
}

View File

@@ -0,0 +1,46 @@
@model Webzine.WebApplication.Areas.Administration.ViewModels.Style.StyleCreateViewModel
@{
ViewData["Title"] = "Créer un style";
}
<div class="container mt-4">
<h1 class="mb-3">Créer un style</h1>
<hr />
<form asp-action="Create" method="post" class="mt-4">
@* Utilisation de d-flex pour aligner les éléments sur une ligne *@
<div class="d-flex align-items-center">
@* Label *@
<div class="me-3">
<label asp-for="Libelle" class="col-form-label fw-bold">
Libellé<span class="text-danger">*</span>
</label>
</div>
@* Input *@
<div class="me-3">
<input asp-for="Libelle" class="form-control" style="width: 250px;" />
</div>
@* Bouton *@
<div>
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
@* Zone d'erreur en dessous *@
<div class="mt-2">
<span asp-validation-for="Libelle" class="text-danger"></span>
</div>
</form>
<div class="mt-4">
<a asp-action="Index" class="btn-link">Retour à l'administration des styles</a>
</div>
</div>