У меня проблема с тем, что в моем URL для отправки формы нет строки запроса, которая указывает на обработчик в коде позади. В результате я получаю ошибку 400 (неверный запрос).
URL запроса выглядит следующим образом:
http://localhost:60900/EventRename
Когда это должно выглядеть так:
http://localhost:60900/EventRename?handler=RenameEvent
Вот .cshtml
<form asp-page-handler="RenameEvent" method="post">
<div class="form-group">
<label asp-for="RenameDataSource"></label>
@Html.DropDownListFor(x => x.RenameDataSource, Model.DataSources, "-- select data source --")
</div>
<div class="form-group">
<label asp-for="RenameTempEvent"></label>
@Html.DropDownListFor(x => x.RenameTempEvent, Model.RenameTempEvents, "-- select event type --")
</div>
<div class="form-group">
<label asp-for="NewName"></label>
@Html.DropDownListFor(x => x.NewName, Model.EventTypes, "-- select event type --")
</div>
<div class="form-group">
<button type="submit">Start Renaming</button>
</div>
</form>
Это может быть связано, но я также заметил, что в данных формы отсутствует '__RequestVerificationToken', который должен быть включен по умолчанию на страницах Razor?
Чтобы уточнить, я не ожидаю увидеть данные из формы в URL. Я ожидаю увидеть ссылку на обработчик, чтобы Razor Code Behind знал, какой метод запустить при отправке формы. Смотрите этот раздел: https://docs.microsoft.com/en-us/aspnet/core/razor-pages/#multiple-handlers-per-page
the URL path that submits to OnPostJoinListAsync is http://localhost:5000/Customers/CreateFATH?handler=JoinList