我执行以下操作并查看以下the docs。
[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>
点击按钮后,我返回到指定操作(即 Validate )的相同操作(即 Login )指令。看来我在表单中唯一控制的是方法。我添加了 using 语句来访问the library of TagHelpers,但似乎并没有起到很大作用。
我想念什么?
答案 0 :(得分:1)
最终翻译(在Chrome或F12中为ctrl + u,然后检查元素)会生成
<form asp-controller="account" asp-action="validate" method="post">...<button type="submit">Check the credentials</button> </form>
。我期望asp-xxx
属性将被转换。我误会了吗?
不,您是正确的。这些标记帮助器属性应已转换为单个action
属性,其中包含您Validate
操作的目标URL。
由于属性没有被转换,这意味着标记助手没有运行。这很可能是由于缺少@addTagHelper
指令引起的。
您需要在视图本身或_ViewImports.cshtml
文件(默认情况下应为该行)中包含以下行:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
不需要使用@using
指令导入名称空间。