C# 单击搜索按钮后,如何在不重置控制值的情况下对列表应用筛选器?
我有一个带有搜索按钮的表单中的人员列表和过滤控件。单击“搜索”按钮时,列表中会填充过滤的数据,但搜索控件也会丢失其选定的值。我不确定这是最好的方法 我尝试将视图分为部分视图和主视图,即人员列表在部分视图中,过滤控件在主视图中C# 单击搜索按钮后,如何在不重置控制值的情况下对列表应用筛选器?,c#,asp.net-mvc,asp.net-core,razor-pages,C#,Asp.net Mvc,Asp.net Core,Razor Pages,我有一个带有搜索按钮的表单中的人员列表和过滤控件。单击“搜索”按钮时,列表中会填充过滤的数据,但搜索控件也会丢失其选定的值。我不确定这是最好的方法 我尝试将视图分为部分视图和主视图,即人员列表在部分视图中,过滤控件在主视图中 应在不丢失搜索控件值的情况下筛选列表。完成这项任务的最佳实践应该是什么?示例图像>>我建议首先使用ViewBag将数据存储在控制器中,如下所示: public ActionResult YourSearchPage() { //Bind th
应在不丢失搜索控件值的情况下筛选列表。完成这项任务的最佳实践应该是什么?示例图像>>我建议首先使用ViewBag将数据存储在控制器中,如下所示:
public ActionResult YourSearchPage()
{
//Bind the data to a list here
List<YourResultType> result = //Get from DB
return View(result);
}
//When the user clicks the "Search" button
[HttpPost]
public ActionResult YourSearchPage(string keyword, int listingType...)
{
//Bind the data to a list here
List<YourResultType> result = //Get from DB
ViewBag.keyword = keyword;
ViewBag.listingType = listingType;
//Filter the list
return View(result);
}
public ActionResult YourSearchPage()
{
//将数据绑定到此处的列表
列表结果=//从数据库获取
返回视图(结果);
}
//当用户单击“搜索”按钮时
[HttpPost]
公共操作结果YourSearchPage(字符串关键字,int listingType…)
{
//将数据绑定到此处的列表
列表结果=//从数据库获取
ViewBag.keyword=关键字;
ViewBag.listingType=listingType;
//筛选列表
返回视图(结果);
}
在视图上,将值绑定到控件,如下所示:
<input type="text" id="keyword" class="keyword" value="@ViewBag.keyword" style="width: 80%;"/>
我建议首先使用ViewBag在控制器中存储数据,如下所示:
public ActionResult YourSearchPage()
{
//Bind the data to a list here
List<YourResultType> result = //Get from DB
return View(result);
}
//When the user clicks the "Search" button
[HttpPost]
public ActionResult YourSearchPage(string keyword, int listingType...)
{
//Bind the data to a list here
List<YourResultType> result = //Get from DB
ViewBag.keyword = keyword;
ViewBag.listingType = listingType;
//Filter the list
return View(result);
}
public ActionResult YourSearchPage()
{
//将数据绑定到此处的列表
列表结果=//从数据库获取
返回视图(结果);
}
//当用户单击“搜索”按钮时
[HttpPost]
公共操作结果YourSearchPage(字符串关键字,int listingType…)
{
//将数据绑定到此处的列表
列表结果=//从数据库获取
ViewBag.keyword=关键字;
ViewBag.listingType=listingType;
//筛选列表
返回视图(结果);
}
在视图上,将值绑定到控件,如下所示:
<input type="text" id="keyword" class="keyword" value="@ViewBag.keyword" style="width: 80%;"/>
您是否可以生成一个最小的工作示例来显示问题并发布代码?不要发布所有当前代码,用一个过滤器和搜索按钮代码做一个示例。当您返回视图时,可能视图已刷新。您可以使用ajax和部分视图。当您单击按钮时,向action发送ajax请求,并返回部分视图,在视图中使用html(结果)呈现此响应
。请参阅@XingZou。对于新手来说,使用ajax并在客户端呈现结果可能有点曲折。最好使用MVC的默认功能来实现这一点,以提高安全性,而且更简单。您能否生成一个最小的、有效的示例来显示问题并发布代码?不要发布所有当前代码,用一个过滤器和搜索按钮代码做一个示例。当您返回视图时,可能视图已刷新。您可以使用ajax和部分视图。当您单击按钮时,向action发送ajax请求,并返回部分视图,在视图中使用html(结果)呈现此响应
。请参阅@XingZou。对于新手来说,使用ajax并在客户端呈现结果可能有点曲折。最好使用MVC的默认功能来实现这一点,以获得更好的安全性,而且更简单。