Почему asp - маршрут переходит на значение сообщения "0" - PullRequest
0 голосов
/ 19 апреля 2020

На моей странице бритвы в форме у меня есть кнопка, которая при отправке вызывает метод "OnPostEditMe" с параметром "int id":

@{ 
    var idbook = @Html.DisplayFor(a => a.EditBook.Id);
    //idbook on page load gets id number of object EditBook when page loads, this works, if I add this value anywhere in razor page it displays correctly 
}

<form method="post">
    <div class="form-group row">
        <div class="col-3 offset-3">
            <button asp-page-handler="EditMe" asp-route-id="@idbook" type="submit"> 
                    Update @idbook
            </button>  
        </div>
    </div>
</form>

Но когда я нажимаю на эту кнопку, он вызывает метод OnPostEditMe, но с параметром "0" вместо значения, которое было загружено с "idbook":

public async Task<IActionResult> OnPostEditMe(int id)
{
    var tmp = id; //id is always 0
    ...
}

Что не так, почему asp -route-id = "@ idbook" не передает параметр, который был загружен на страницу

1 Ответ

1 голос
/ 19 апреля 2020

Вы должны установить form вместо кнопки

<form method="post" asp-route-id="@idbook">

Или вы можете использовать скрытый ввод

 <input value="@idbook" name="id" id="id" type="hidden"/>.
...