我对前端有点陌生,所以请耐心等待。
我试图用asp.net core 2.2 MVC创建一个表单,每个人都建议使用ajax,但我想使用新的标记助手。 这是我的代码(控制器 user 是与我所在的控制器不同的控制器)
<form method="get" asp-area="" asp-controller="User" asp-action="UserByUsername">
<input id="userName" type="text" placeholder="Search.." name="1">
<button type="submit" value="userName">a</button>
</form>
该按钮使用?1 = value调用相同的网址
但是我想调用标记中指定的控制器和操作,并将参数作为字符串user / userbyusername / whatusertype
的一部分我应该进行哪些更改才能使其正常工作?预先感谢!
更新 ----------------------
使用asp-route-value传递参数,但是它传递“ userName”而不是下面的texboxid“ userName”的值
<form method="get"asp-route-username="userName" asp-area="" asp-controller="User" asp-action="UserByUsername">
<input id="userName" type="text" placeholder="Search..">
<button type="submit" value="userName">a</button>
</form>
如何传递该值?
答案 0 :(得分:1)
首先按照以下步骤正确编写您的form
:
<form method="post" asp-area="" asp-controller="User" asp-action="UserByUserName">
<input name="userName" type="text" placeholder="Search..">
<button type="submit">Submit</button>
</form>
现在在您的控制器方法中:
[HttpPost]
public IActionResult UserByUserName(string userName)
{
// do whatever you want to do with `userName`
return View();
}
我在这里使用了post
方法。您也可以使用代码中显示的get
方法。为此,只需将method="post"
替换为method="get"
,将[HttpPost]
替换为[HttpGet]
。
现在一切正常。