Всякий раз, когда я отправляю форму, она передает нулевые значения в .NET Core 6

.cshtml код:

@model Tuple<CI_platform.Entities.ViewModels.SheetViewModel, List<CI_platform.Entities.ViewModels.SheetViewModel>, List<CI_platform.Entities.ViewModels.SheetViewModel>>

Это модели просмотра, которые я хочу в этом .cshtml.

Это моя форма в .cshtml:

<form method = "post" asp-action = "sheetdatabase" asp-controller = "TimeSheet">
    <div class = "modal-body">
        <div class = "d-flex flex-column">
            <label for = "mission">Mission</label>
            <select id = "mission" asp-for = "@Model.Item1.MissionId">
                <option>Select Mission</option>
            </select>
        </div>
        <div class = "d-flex flex-column mt-2">
            <label for = "date">Date Volunteered</label>
            <input type = "date" placeholder = "select date" id = "date" asp-for = "@Model.Item1.DateVolunteered" />
        </div>
        <div class = "d-flex mt-2 justify-content-between">
            <div class = "d-flex flex-column">
                <label for = "hour">Hours</label>
                <input type = "number" id = "hour" asp-for = "@Model.Item1.hour" />
            </div>
            <div class = "d-flex flex-column mt-2">
                <label for = "minute">Minutes</label>
                <input type = "number" id = "minute" asp-for = "@Model.Item1.minute" />
            </div>
        </div>
        <div class = "d-flex flex-column">
            <label for = "message">Message</label>
            <textarea id = "message" placeholder = "Enter your message" asp-for = "@Model.Item1.Notes"></textarea>
        </div>
    </div>

    <div class = "modal-footer">
        <button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal">Close</button>
        <button type = "submit" class = "btn btn-primary" id = "sendmail">Submit</button>
    </div>
</form>

Это действие, которому я передаю это значение:

public IActionResult sheetdatabase(SheetViewModel model)
{
    if (!ModelState.IsValid)
    {
        foreach (var error in ModelState.Values.SelectMany(v => v.Errors))
        {
            Console.WriteLine(error.ErrorMessage);
        }
    }

    var user_id = long.Parse(HttpContext.Session.GetString("userid"));
    _timesheetRepository.sheetdatabase(model, user_id);

    return View("volunteersheet");
}

Здесь, когда я отправляю форму, в контроллере объект всегда имеет значение null, даже если я заполняю значения во входных и других тегах, это метод публикации.

Это мой метод получения для volunteersheet.cshtml:

public IActionResult volunteersheet()
{
    var (entity1,entity2) = _timesheetRepository.getdatasheet();
    var model1 = new SheetViewModel();
    var tuple = new Tuple<SheetViewModel, List<SheetViewModel>, List<SheetViewModel>>(model1, entity1, entity2);

    return View(tuple);
}

Здесь я передаю один экземпляр двух списков, эти два списка предназначены для извлечения данных из базы данных и показа их для просмотра:

public class SheetViewModel
{
    public long UserId { get; set; }
    public long MissionId { get; set; }
    public string missiontitle { get; set; }
    public long hour { get; set; } = new long();
    public long minute { get; set; } = new long();
    public TimeSpan Time { get; set; }

    public int Action { get; set; } = new int();

    public DateTime? DateVolunteered { get; set; }

    public string Notes { get; set; }
}

Это моя модель.

Этот код правильно извлекает базу данных формы значений, а также отображается в поле зрения, но всякий раз, когда я отправляю форму, действие модели в базе данных листа всегда равно нулю - пожалуйста, помогите мне с этим.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

@model Tuple<CI_platform.Entities.ViewModels.SheetViewModel, List<CI_platform.Entities.ViewModels.SheetViewModel>, List<CI_platform.Entities.ViewModels.SheetViewModel>>

Это, кажется, источник проблемы, asp-for = "@Model.Item1.{PropName}" будет публиковать данные с Item1.{PropName}, в то время как привязка модели ожидает только {PropName}. Вам нужно либо имитировать структуру модели в принимающем действии, либо использовать настраиваемую привязку. Попробуйте одно из следующих действий:

public IActionResult sheetdatabase([Bind(Prefix = "Item1")] SheetViewModel model)

Читать далее:

Модель Tuple<SheetViewModel> выдает ошибку, что не может создать экземпляр кортежа

GALAXY A50 01.04.2023 19:55

@ GALAXYA50, тогда попробуйте другие подходы.

Guru Stron 01.04.2023 20:24

Другие вопросы по теме