ASP.NET MVC 核心标签助手问题

ASP.NET MVC Core Tag Helper Issue

我在表单元素中使用标签助手时遇到问题。当我选择 "GET" HTTP 方法时,我的 Item 控制器中的 Edit 方法的参数不会被 "hello" 参数填充。但是,当我选择 "POST" HTTP 方法时,参数被正确填充为 "hello"。为什么会这样?

<form asp-controller="Item" asp-action="Edit" asp-route-item="hello" method="get">
    <input type="submit" />
</form>

这是控制器:

    [HttpGet]
    [HttpPost]
    public IActionResult Edit(string item)
    {
        if (Request.Method == "GET")
        {
            ViewData["item"] = item;
            return View();
        }
    }

form 标签助手无关。当使用 HTML form 标记时,如果您使用的是 GET 方法,浏览器将读取表单元素值并将其附加到表单 action 属性值 url 之后的 ?。因此,我假设您的浏览器为此目的删除了现有的查询字符串项。因此,请考虑将其移至表单内的输入元素。

<form asp-controller="Home" asp-action="Edit" method="get">
    <input type="hidden" name="item" value="second"/>
    <input type="submit"/>
</form>

不能保证从 action 方法属性发送现有的查询字符串值。请查看 submitting a GET form with query string params and hidden params disappear