Eigene Error Messages (MVC Validation Attribut) kann nicht angezeigt werden

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ß

was ist deine View für ein Datei?