我有一个ASP.NET Core MVC Web应用程序,它有一个IENumable对象,它在屏幕上显示为一列按钮.我还有一个搜索栏,我希望能够过滤按钮的基础上,他们是否包含搜索字符串.

我让它正常工作,这样我就可以通过附加?earch String="Whatwhere"来手动更改URL,并且它可以正常工作.但是,如何才能使表单发布包含基于文本框中当前内容的搜索字符串值呢?我try 了使用输入框的id的不同方法,但一直无法解决.

这基本上就是它看起来的样子.

<form method="post" action="@Url.Action("Index", "Home", new { searchString = "What goes here?"})">
  <button class="btn btn-secondary my-2 my-sm-0" type="submit">Search</button>
  <input class="form-control me-sm-2" type="text" placeholder="Enter Name">
</form>

我可以在url.action中放一些东西来捕获文本框的内容并将其与帖子一起发送吗?或者我需要try 另一种实现?

推荐答案

在提交表单时,您可以绑定表单输入,以便控制器能够读取它.至少要做到这一点,您需要向输入添加一个name属性,使其看起来如下所示:

<input class="form-control me-sm-2" type="text" name="search" placeholder="Enter Name">

然后,在控制器上,您可以将该值作为参数添加,如下所示:

public IActionResult Index( string? search = null )

您也不需要在Url.Action呼叫中保留searchString对象.

随着表单的增长,最终转移到模型绑定会更好,在这种绑定中,您可能会拥有如下的ViewModel:

public class SearchViewModel{
   public string Search { get; set;}
   public string OtherThing { get; set}
}

然后在您的控制器上,您将执行以下操作:

public IActionResult Index( SearchViewModel viewModel )

在表单上,您可以使用标记帮助器:

@model SearchViewModel At the top of the page

<form method="post" action="@Url.Action("Index", "Home")">
  <button class="btn btn-secondary my-2 my-sm-0" type="submit">Search</button>
  <input class="form-control me-sm-2" type="text" asp-for="Search" placeholder="Enter Name">
</form>

Html相关问答推荐

为什么在Vuettify 3中使用Flex时会忽略宽度?

css网格区域的布局不展开,也不显示滚动条

试图让三个Divs与下面的另外三个对齐

输入表单在奇怪的地方舍入的标签

如何使我的组织 struct 图的连接线响应?

如何使用css为动态用户输入矩阵添加背景色?

如何最大限度地减少Cookie同意代码对性能的影响?

在<;style&>中列出的三种字体中,只有两种显示

Css网格:两列,除非小于150px

在css中是否可以在遮罩图像中结合线性渐变和径向渐变?

如何用背景色填充边框半径创建的间隙

网格布局中的组件

在显示 swift ui 之前加载下一个 YouTube 视频

添加带有悬停动画的喜欢图标

在 flexbox 中使用 spacer 是否有效

在DIV上应用梯度模糊未如预期工作

对齐页面左侧的单选按钮

为什么
标签在 Edge 和 Firefox 中的编号会有两种不同的结果?

将表格标题和过滤器调整到表格的顶部边缘

如何使具有两个元素的 div 行在移动设备中响应