From 1a96616699ab41bf6343bc1acc45a836c3e6caf3 Mon Sep 17 00:00:00 2001 From: Paweł Bernaciak Date: Fri, 22 Dec 2023 16:02:41 +0100 Subject: Backup --- CoreWiki/Pages/Create.cshtml.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'CoreWiki/Pages/Create.cshtml.cs') diff --git a/CoreWiki/Pages/Create.cshtml.cs b/CoreWiki/Pages/Create.cshtml.cs index d89b97b..0bf9327 100644 --- a/CoreWiki/Pages/Create.cshtml.cs +++ b/CoreWiki/Pages/Create.cshtml.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.Rendering; using CoreWiki.Models; +using CoreWiki.Utils; using NodaTime; namespace CoreWiki.Pages @@ -30,19 +31,26 @@ namespace CoreWiki.Pages public Article Article { get; set; } = default!; - // To protect from overposting attacks, see https://aka.ms/RazorPagesCRUD public async Task OnPostAsync() { - if (!ModelState.IsValid || _context.Articles == null || Article == null) + ModelState.Remove("Article.Slug"); + if (!ModelState.IsValid) { return Page(); } + Article.Slug = SafeUrl.Create(true, Article.Topic); Article.Published = _clock.GetCurrentInstant(); + if (_context.Articles.Any(a => a.Slug == Article.Slug)) + { + ModelState.AddModelError("Article.Topic", "Article already exists"); + return Page(); + } + _context.Articles.Add(Article); await _context.SaveChangesAsync(); - return Redirect($"/{Article.Topic}"); + return Redirect($"/{Article.Slug}"); } } } -- cgit v1.2.3