Asp-действие внутри формы не идет к контроллеру - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть форма:

@model TodoItem
<form asp-action="/Todo/AddItem" method="POST">
    <label asp-for="Title">Add a new item:</label>
    <input asp-for="Title">
    <button type="submit">Add</button>
</form>

Я вызываю ее в Index.html

@await Html.PartialAsync("AddItemPartial", new TodoItem())

, который вызывает контроллер при нажатии кнопки:

public async Task<IActionResult> AddItem(TodoItem newItem)
{ 
  //code that calls service...
}

Я никогда не достигал точки останова в AddItem, я читал, что это может быть из-за того, что asp-действие не запускается из-за того, что _ViewImports.cshtml не находится в той же папке, или из-за того, что он не содержит @addTagHelper.Пробовал эти решения, но не работал.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 23 февраля 2019

Я думаю, что когда вы используете asp-action, вы должны указывать только имя действия, а не полный путь.

НапримерЕсли ниже код на вашей странице:

<form asp-controller="Demo" asp-action="Register" method="post">
    <!-- Input and Submit elements -->
</form>

Этот код преобразуется в приведенный ниже код:

<form method="post" action="/Demo/Register">
    <!-- Input and Submit elements -->
    <input name="__RequestVerificationToken" type="hidden" value="<removed for brevity>" />
</form>

Пожалуйста, проверьте, что после того, как серверный код преобразован в HTML, нетasp-action, есть только атрибут action, понятный HTML-форме.

Вам придется изменить код на:

@model TodoItem
<form asp-controller="Todo" asp-action="AddItem" method="POST">
    <label asp-for="Title">Add a new item:</label>
    <input asp-for="Title">
    <button type="submit">Add</button>
</form>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...