带有标签助手的呼叫控制器,包括来自ASP.NET Core MVC中搜索栏的数据

时间:2019-01-20 09:13:53

标签: c# asp.net-core asp.net-core-mvc

我对前端有点陌生,所以请耐心等待。

我试图用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>

如何传递该值?

1 个答案:

答案 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]

现在一切正常。