Не удается перенаправить отправку на действие

У меня есть следующие действия и я просматриваю следующие документы.

[HttpPost("validate")]
public IActionResult Validate([FromQuery] string user, string pass)
{ ... }

[HttpGet("login")]
public IActionResult LogIn([FromQuery] string returnUrl)
{ 
  ...
  return View(model); 
}
@using Microsoft.AspNetCore.Mvc.TagHelpers;
@model Dictionary<string, string>

<form asp-controller="account" asp-action="validate" method="post">
  <input asp-for="@Model["user"]" placeholder="Username" />
  <input asp-for="@Model["pass"]" placeholder="Password" />
  <button type="submit">Go!</button>
</form>

После нажатия на кнопку, я возвращаюсь к тому же действию (то есть, входу в систему) инстеда указанного (т.е. проверки). Кажется, что единственное, что я контролирую в форме, это метод. Я добавил оператор using для доступа к библиотеке TagHelpers, но, похоже, это не делает различий.

Что я мог пропустить?

1 ответ

Решение

Окончательное исполнение (Ctrl + U в Chrome или F12 и проверка элементов) производит <form asp-controller="account" asp-action="validate" method="post">...<button type="submit">Check the credentials</button> </form>, Я ожидал asp-xxx атрибуты для преобразования. Я ошибся?

Нет вы правы Эти вспомогательные атрибуты тегов должны были быть преобразованы в один action атрибут, который содержит целевой URL для вашего Validate действие.

Поскольку атрибуты не были преобразованы, это означает, что помощники тегов не запускались. Это, скорее всего, вызвано отсутствием @addTagHelper директивы.

Вы должны иметь следующую строку либо в вашем представлении, либо в _ViewImports.cshtml файл (где строка должна быть по умолчанию):

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

Импорт пространства имен с @using директива не нужна.

Другие вопросы по тегам