Обновление модели с помощью Core 2.2 - PullRequest
0 голосов
/ 02 мая 2019

Как вы обрабатываете идентификатор на странице сведений с помощью новейшей технологии ASP.NET Core 2.2?

Если я использую скрытое поле с идентификатором, оно пропускается, когда я нажимаю кнопку Сохранить.Но когда я комментирую это, я не получу Id.

<form asp-controller="Coach" asp-action="UpdateCoach" method="post">
@*<input asp-for="Coach.Id" type="hidden" />*@
<table class="table table-bordered table-condensed">
    <tr>
        <td>Naam:</td>
        <td><input asp-for="Coach.CoachName" value="@Model.Coach.CoachName" /></td>
    </tr>
    <tr>
        <td>Type coach:</td>
        <td>
            <select asp-for="Coach.CoachTypeId" asp-items="@(new SelectList(Model.CoachTypes,"Id", "CoachTypeDescription"))">
                <option></option>
            </select>
        </td>
    </tr>
    <tr>
        <td>Telefoon:</td>
        <td><input asp-for="Coach.CoachPhone" value="@Model.Coach.CoachPhone" /></td>
    </tr>
    <tr>
        <td>Email:</td>
        <td><input asp-for="Coach.CoachEmail" value="@Model.Coach.CoachEmail" /></td>
    </tr>
</table>

<input type="submit" value="Opslagen" class="btn btn-default" />

Это мой контроллер:

 [HttpPost]
    public async Task<IActionResult> UpdateCoach(CoachViewModel coachViewModel)

    {
        return Redirect("/Coach/Coach");
    }

В coachViewModel я получаю все значения, ожидающие Id!

1 Ответ

0 голосов
/ 02 мая 2019

Как вы обрабатываете идентификатор на странице сведений

Если предположить, что это страница "редактирования" для сущности, которая уже существует в базе данных, то ваши параметры включают:

  • Сохраните его в скрытом поле, чтобы оно было включено в POST.
  • Используйте его в качестве параметра пути URI или параметра строки запроса
    • , например, GET /users/{userId} и PSOT /users/{userId} или GET /users?userId={userId} и POST /users?userId={userId}
  • Если значение Id может быть определено из текущего запроса (например, на основе защиты User Claim или чего-либо вsession-state) затем используйте это.

Если это страница для определения данных для новой сущности, которая еще не существует (при условии, что вы используете IDENTITY / AUTO_INCREMENT),тогда это не имеет значения, потому что вы все равно будете выполнять операцию INSERT, и у вас все равно должен быть отдельный путь URI (и действие контроллера) для этой операции (т. е. ваш код не ожидает и не требует какого-либо идентификатора объекта вэтот сценарий).

...