Форма POST возвращает нулевую модель - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь сохранить модель в своей базе данных через форму сообщения. Вот как выглядит модель:

public class CreditCard
{
    public CardDetails cardDetails { get; set; }
    public UserDetails userDetails { get; set; }
}

public class CardDetails
{
    public string CardNumber { get; set; }
}

public class UserDetails
{
    public string Name { get; set; }
}

Вот представление, которое отображает форму, я использую компонент представления для каждого объекта в CreditCard:

@model CreditCard

<form asp-controller="Card" asp-action="Save" method="post">
    <button type="submit" name="save" class="btn bg-blue"></button>

    @await Component.InvokeAsync("CardDetails", Model.cardDetails)
    @await Component.InvokeAsync("UserDetails", Model.userDetails)
</form>

Компонент CardDetails:

@model CardDetails

<div class="form-group">
    @Html.EditorFor(model => model.CardNumber)
</div>

Это работает нормально, т.е. компоненты получают данные из базы данных, а поля заполняются просто отлично. Однако, когда я пытаюсь POST через кнопку сохранения, он возвращает ноль. Вот действие (которое срабатывает успешно, но параметр cardDetails и userDetails имеет значение NULL:

public async Task<ActionResult> Save(CreditCard creditCard)
{
      // do stuff but creditCard.cardDetails and creditCard.userDetails are both null
}

Может кто-нибудь понять, что здесь не так?

1 Ответ

0 голосов
/ 09 января 2019

Вы отправляете на сервер тело, отличное от установленного для потребления.

Save принимает CreditCard в качестве аргумента, но вы сначала отправляете объект CardDetails, а затем UserDetails объект.

Вам либо нужны два разных Save(), один из которых принимает CardDetails, а другой - UserDetails, либо вы создаете объект CreditCard на стороне клиента перед отправкой.

...