【发布时间】:2018-12-12 00:06:17
【问题描述】:
我有以下操作并查看关注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>
点击按钮后,我返回到指定(即验证)的相同操作(即LogIn)。似乎我在表单中唯一控制的是方法。我添加了 using 语句来访问the library of TagHelpers,但它似乎并没有起到千斤顶的作用。
我错过了什么?
【问题讨论】:
-
浏览器中最终呈现的 HTML 是什么样的?正确的 URL 是否出现在表单的
action属性中? – 此外,为了以防万一,请尝试使asp-controller和asp-action的值区分大小写,即asp-controller="Account" asp-action="Validate"。此外,您还想从 POST 操作中删除[FromQuery]。参数作为表单数据传递,而不是查询(你通常也不需要那些From~属性,除非你正在做不寻常的事情。 -
@poke 最终版本(在 Chrome 或 F12 中按 ctrl+u 并检查元素)产生 。我期待 asp-xxx 属性被转换。我弄错了吗? (我已经尝试过区分大小写和预期的结果 - 没有区别。另外,FromXxx 属性的好点 - 我想我开始感到恐慌并开始做试验和恐怖。)
标签: c# razor asp.net-core tag-helpers