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
我在表单元素中使用标签助手时遇到问题。当我选择 "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