如何将参数添加到我的表单中

本文关键字:我的 表单 添加 参数 | 更新日期: 2023-09-27 18:27:30

<form method="post" class="search-form" action="?">
  <fieldset>
   <input class="search home_input_search" placeholder="Поиск" type="search" />
   <input  type="submit" class="subm but_search" value="" />
 </fieldset>
</form>

我有一个表单 - 搜索,这是布局,我的任务在创建中一致,链接到带有 Products/index?search_name=something 等参数的控制器。而且我不知道如何在链接中转移值文本框。

如何将参数添加到我的表单中

将 onsubmit 事件处理程序添加到表单中,它应该:

  1. 使用查询字符串创建 URL ?search_name= 输入中的值
  2. 将 window.location.href 设置为创建的 URL
  3. 返回假

编辑:当然,您可以通过不同的方式实现它,在这种情况下不需要表单。

您必须

input提供他们在发布时应该拥有的name,并在form上设置正确的action。输入上的name决定了 URL 中的键(因为您使用 GET 方法(。在form上设置action将指示将其发送到何处。

<form method="post" class="search-form" action="Products/index" method="GET">
  <fieldset>
   <input name="search_name" class="search home_input_search" placeholder="Поиск" type="search" />
   <input  type="submit" class="subm but_search" value="" />
 </fieldset>
</form>

首先,最好将控制器参数称为"searchName"而不是"search_name"。这与代码约定相对应。

接下来,当你在浏览器中调用Proudcts/index?search_name=somethink时,你正在发起GET请求。GET 请求没有正文,并与查询参数通信。

当您创建新表单并将其提交到服务器时,您正在启动 POST 请求(默认情况下(。发布请求具有包含请求参数的正文部分。

然后我们应该从视图开始。如果要使用查询字符串,则应显式创建 GET 窗体:

@using (Html.BeginForm("ControllerMethodName", "ControllerName", FormMethod.Get))
{
}

接下来,您应该使用与控制器方法参数中相同的名称将 name 属性添加到输入中:

<input class="search home_input_search" name="searchName" placeholder="Поиск" type="search" />

或者你可以使用 HtmlHelper 方法来生成 html:

@Html.TextBox("searchName", string.Empty, new Dictionary<string, object> { { "class", "search home_input_search" }, { "placeholder", "Поиск" } })

最后,您可以根据需要拥有任意数量的参数:

@using (Html.BeginForm("ControllerMethodName", "ControllerName", FormMethod.Get))
{
    @Html.Label("Поиск")
    @Html.TextBox("searchName", string.Empty, new Dictionary<string, object> { { "class", "search home_input_search" }, { "placeholder", "Поиск" } })
    @Html.Label("Включая вложенные")
    @Html.CheckBox("includeNested", true)
}