From f24e02c8b480ec7d914e0555bc11f6b94f57bfda Mon Sep 17 00:00:00 2001 From: donpat1to Date: Wed, 30 Jul 2025 11:14:17 +0200 Subject: [PATCH] added asp-controller to editserver.cshtml + using id in edtiserver as hidden --- Watcher/Controllers/ServerController.cs | 38 ++++++++++++++--------- Watcher/ViewModels/EditServerViewModel.cs | 21 +++++++++---- Watcher/Views/Server/EditServer.cshtml | 12 ++++--- 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/Watcher/Controllers/ServerController.cs b/Watcher/Controllers/ServerController.cs index 8efc86c..2208017 100644 --- a/Watcher/Controllers/ServerController.cs +++ b/Watcher/Controllers/ServerController.cs @@ -96,23 +96,33 @@ public class ServerController : Controller [ValidateAntiForgeryToken] public async Task EditServer(int id, EditServerViewModel vm) { - if (ModelState.IsValid) + if (!ModelState.IsValid) { - var server = await _context.Servers.FindAsync(id); - if (server == null) return NotFound(); - - server.Name = vm.Name; - server.IPAddress = vm.IPAddress; - server.Type = vm.Type; - - await _context.SaveChangesAsync(); - - _logger.LogInformation("Server '{server}' erfolgreich aktualisiert", server.Name); - - return RedirectToAction(nameof(Overview)); + return View(vm); } - return View(vm); + var server = await _context.Servers.FindAsync(id); + if (server == null) + { + return NotFound(); + } + + server.Name = vm.Name; + server.IPAddress = vm.IPAddress; + server.Type = vm.Type; + + try + { + await _context.SaveChangesAsync(); + _logger.LogInformation("Server '{server}' erfolgreich aktualisiert", server.Name); + return RedirectToAction(nameof(Overview)); + } + catch (Exception ex) + { + _logger.LogError(ex, "Fehler beim Speichern des Servers"); + ModelState.AddModelError("", "Fehler beim Speichern"); + return View(vm); + } } // GET: Server/Details/5 diff --git a/Watcher/ViewModels/EditServerViewModel.cs b/Watcher/ViewModels/EditServerViewModel.cs index f94df04..cb7d27d 100644 --- a/Watcher/ViewModels/EditServerViewModel.cs +++ b/Watcher/ViewModels/EditServerViewModel.cs @@ -1,10 +1,19 @@ -namespace Watcher.ViewModels; +using System.ComponentModel.DataAnnotations; -public class EditServerViewModel +namespace Watcher.ViewModels { - public string Name { get; set; } = string.Empty; + public class EditServerViewModel + { + public int Id { get; set; } - public string IPAddress { get; set; } = string.Empty; + [Required(ErrorMessage = "Name ist erforderlich")] + public string Name { get; set; } - public string Type { get; set; } = "VPS"; -} + [Required(ErrorMessage = "IP-Adresse ist erforderlich")] + [RegularExpression(@"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$", ErrorMessage = "Ungültige IP-Adresse")] + public string IPAddress { get; set; } + + [Required(ErrorMessage = "Typ ist erforderlich")] + public string Type { get; set; } + } +} \ No newline at end of file diff --git a/Watcher/Views/Server/EditServer.cshtml b/Watcher/Views/Server/EditServer.cshtml index d3f3fe5..4cef587 100644 --- a/Watcher/Views/Server/EditServer.cshtml +++ b/Watcher/Views/Server/EditServer.cshtml @@ -1,4 +1,4 @@ -@model Watcher.ViewModels.EditServerViewModel; +@model Watcher.ViewModels.EditServerViewModel @{ ViewData["Title"] = "Server bearbeiten"; @@ -6,26 +6,28 @@

Server bearbeiten

-
+ @Html.AntiForgeryToken() +
+
-
- +
+
Abbrechen -
+ \ No newline at end of file