Asp.net core mvc в агрументе null

Есть метод post

    [Authorize(Roles = "Admin")]
    [HttpPost]
    async public Task<IActionResult> StudentsAdd([FromForm]StudentModel student)
    {
        Console.WriteLine($"{student.Name} 1");
        Console.WriteLine($"{student.Surname} 2");
        Console.WriteLine($"{student.Middle_name} 5");
        Console.WriteLine($"{student.Age} 4");
        Console.WriteLine($"{student.Group} 5");

        await using var con = new NpgsqlConnection("Server=localhost;Port=5432;Username=postgres;Password=18082004;Database=users_db");
        const string sql = @"
        INSERT INTO students (name, surname, middle_name, age, group_name)
        VALUES (@Name, @Surname, @Middle_name, @Age, @Group);
        ";

        await con.OpenAsync();

        const string checkGroupSql = @"SELECT COUNT(1) FROM groups WHERE group_name ILIKE @group;";

        if (string.IsNullOrWhiteSpace(student.Group))
        {
            return Content("Group is null or empty");
        }


        await using var checkGroupCmd = new NpgsqlCommand(checkGroupSql, con);
        checkGroupCmd.Parameters.AddWithValue("group", student.Group ?? (object)DBNull.Value);

        var groupExists = (long)await checkGroupCmd.ExecuteScalarAsync() > 0;

        if (!groupExists)
        {
            return View("GroupNotFound");
        }

        await using var command = new NpgsqlCommand(sql, con);
        command.Parameters.AddWithValue("Name", student.Name ?? (object)DBNull.Value);
        command.Parameters.AddWithValue("Surname", student.Surname ?? (object)DBNull.Value);
        command.Parameters.AddWithValue("Middle_name", student.Middle_name ?? (object)DBNull.Value);
        command.Parameters.AddWithValue("Age", student.Age);
        command.Parameters.AddWithValue("Group", student.Group ?? (object)DBNull.Value);

        await command.ExecuteNonQueryAsync();

        return View("AddStudent");
    }

есть модель StudentModel

public class StudentModel
{
    public string? Name { get; set; }
    public string? Surname { get; set; }
    public string? Middle_name { get; set; }
    public int Age { get; set; }
    public string? Group { get; set; }
}

есть представление

    @using Diplom2.Models
@model StudentModel

@{
    ViewData["Title"] = "Добавить студента";
}

<h2>@ViewData["Title"]</h2>

<form asp-action="StudentsAdd" asp-controller="Admin" method="post" class="student-form">
    <div class="form-group">
        <label asp-for="Name">Имя</label>
        <input asp-for="Name" class="form-control" placeholder="Введите имя" />
        <span asp-validation-for="Name" class="text-danger"></span>
    </div>

    <div class="form-group">
        <label asp-for="Surname">Фамилия</label>
        <input asp-for="Surname" class="form-control" placeholder="Введите фамилию" />
        <span asp-validation-for="Surname" class="text-danger"></span>
    </div>

    <div class="form-group">
        <label asp-for="Middle_name">Отчество</label>
        <input asp-for="Middle_name" class="form-control" placeholder="Введите отчество" />
        <span asp-validation-for="Middle_name" class="text-danger"></span>
    </div>

    <div class="form-group">
        <label asp-for="Age">Возраст</label>
        <input asp-for="Age" type="number" min="0" class="form-control" placeholder="Введите возраст" />
        <span asp-validation-for="Age" class="text-danger"></span>
    </div>

    <div class="form-group">
        <label asp-for="Group">Группа</label>
        <input asp-for="Group" class="form-control" placeholder="Введите группу" />
        <span asp-validation-for="Group" class="text-danger"></span>
    </div>

    <button type="submit" class="btn btn-primary mt-3">Добавить студента</button>
</form>

@section Scripts {
    <partial name="_ValidationScriptsPartial" />
}


    

я получаю в методе StudentsAdd в агрументе null почему?


Ответы (0 шт):