Hey, also ich habe folgendes Modell:
public class Lesson
{
[Required(ErrorMessage = "Die Id ist erforderlich.")]
[Range(1, 1000, ErrorMessage = "Die Id muss zwischen 1 und 1000 liegen.")]
public int Id { get; set; }
[Required(ErrorMessage = "Der Titel ist erforderlich.")]
[StringLength(20, ErrorMessage = "Der Titel darf nicht länger als 20 Zeichen sein.")]
public string? Title { get; set; }
[Required(ErrorMessage = "Der Link zur Kartendeck ist erforderlich.")]
[StringLength(20, ErrorMessage = "Der Link zur Kartendeck darf nicht länger als 20 Zeichen sein.")]
public string? CardDeckLink { get; set; }
[Required(ErrorMessage = "Die Zeitabschätzung ist erforderlich.")]
[Range(0, 2000, ErrorMessage = "Die Zeitabschätzung muss zwischen 0 und 2000 liegen.")]
public int? TimeEstimation { get; set; }
public Lesson() { }
public Lesson(int id, string title)
{
this.Id = id;
this.Title = title;
}
}
Mein Controller sieht folgendermaßen aus:
public class TeachingplanController : Controller
{
static private List<Lesson> lessons = new List<Lesson>
{
new Lesson
{
Id = 101,
Title = "help",
CardDeckLink = "Teachingplan/101",
TimeEstimation = 2,
},
new Lesson
{
Id = 213,
Title = "copy & paste (advanced)",
CardDeckLink = "Teachingplan/213",
TimeEstimation = 15,
},
new Lesson
{
Id = 456,
Title = "Alt+F4",
CardDeckLink = "Teachingplan/456",
TimeEstimation = 0,
},
new Lesson
{
Id = 999,
Title = "The End",
CardDeckLink = "Teachingplan/999",
TimeEstimation = 13,
},
};
[HttpGet("/Teachingplan")]
public ViewResult Index()
{
TeachingplanViewModel viewModel = new TeachingplanViewModel()
{
Lessons = lessons,
Title = "Lehrplan",
Header = "Aktuelle Lehrplanübersicht"
};
return View(viewModel);
}
public ViewResult NewLektion()
{
return View();
}
[HttpPost("/Teachingplan/NewLektion")]
[ValidateAntiForgeryToken]
public IActionResult NewLektion(Lesson lesson)
{
if (ModelState.IsValid)
{
lessons.Add(lesson);
return RedirectToAction("Index");
}
return View("NewLektion", lesson);
}
}
Meine View sieht folgendermaßen aus:
<!DOCTYPE html>
<html>
<head>
<style>
.form-group {
margin-bottom: 20px;
}
</style>
</head>
<body>
<h2>Neue Lektion anlegen</h2>
<form class='card p-3 bg-light' asp-action="AddLesson" method="post">
<div class="form-group">
<label asp-for="Id" class="control-label">Id</label>
<input asp-for="Id" class="form-control" placeholder="Bitte Id eingeben" type="number" min="1" required="true"/>
<span asp-validation-for="Id" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Title" class="control-label">Titel</label>
<input asp-for="Title" class="form-control" placeholder="Bitte Titel eingeben" type="text" required="true"/>
<span asp-validation-for="Title" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CardDeckLink" class="control-label">Link</label>
<input asp-for="CardDeckLink" class="form-control" placeholder="Bitte Link eingeben" type="url" required="true"/>
<span asp-validation-for="CardDeckLink" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="TimeEstimation" class="control-label">Zeitbedarf</label>
<input asp-for="TimeEstimation" class="form-control" placeholder="Bitte Zeitdauer eingeben" type="text" required="true"/>
<span asp-validation-for="TimeEstimation" class="text-danger"></span>
</div>
<div>
<button type="submit" class="btn btn-primary">Erstellen</button>
</div>
</form>
</body>
</html>
Das Problem ist jetzt, dass meine eigenen Fehlermeldungen nicht angezeigt werden. Wenn ich jetzt z.B nichts eingebe und create drücke dann bekomme ich nur " id is required!" warum werden meine validations nicht genutzt?
Gruß