【问题标题】:Can't redirect the submit to an action无法将提交重定向到操作
【发布时间】: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-controllerasp-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


【解决方案1】:

最终版本(Chrome 或 F12 中的 ctrl+u 并检查元素)生成 &lt;form asp-controller="account" asp-action="validate" method="post"&gt;...&lt;button type="submit"&gt;Check the credentials&lt;/button&gt; &lt;/form&gt;。我期待 asp-xxx 属性被转换。我弄错了吗?

不,你是对的。这些标签助手属性应该已转换为单个 action 属性,其中包含您的 Validate 操作的目标 URL。

由于属性没有被转换,这意味着标签助手没有运行。这很可能是由于缺少 @addTagHelper 指令造成的。

您需要在视图本身或_ViewImports.cshtml 文件中包含以下行(默认情况下应位于该行):

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

不需要使用@using 指令导入命名空间。

【讨论】:

  • 所以,只是为了验证我是否正确理解 - @using Microsoft.AspNetCore.Mvc.TagHelpers; 部分在这种情况下无关紧要?我添加它是因为我相信是 这个 导致助手执行。你提出的指令对我来说是新的。我想我在 Angular 湖中潜水的时间太长了,C# 离我而去。
  • @using 指令用于使某个命名空间中的类型可从 Razor 代码中使用(例如,如果您在某处有 @using MyApp.Models,则可以使用 @model Foo 而不是 @model MyApp.Models.Foo)。但是为了激活标签助手,你需要 @addTagHelper 指令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 2016-12-14
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
相关资源
最近更新 更多