diff options
| author | Paweł Bernaciak <pawelbernaciak@zohomail.eu> | 2023-12-22 16:02:41 +0100 |
|---|---|---|
| committer | Paweł Bernaciak <pawelbernaciak@zohomail.eu> | 2023-12-22 16:02:41 +0100 |
| commit | 1a96616699ab41bf6343bc1acc45a836c3e6caf3 (patch) | |
| tree | aff3d8bb8418355d3a8279024afaa13f196a0506 /CoreWiki/Pages/Create.cshtml.cs | |
| parent | 7fefe217c8462444ecb9806599e70afe2a7102ea (diff) | |
Backup
Diffstat (limited to 'CoreWiki/Pages/Create.cshtml.cs')
| -rw-r--r-- | CoreWiki/Pages/Create.cshtml.cs | 14 |
1 files changed, 11 insertions, 3 deletions
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<IActionResult> 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}");
}
}
}
|
