asp.net - 在 ASP.NET Core MVC 的 PaginatedList 的下一页上保留来自 HttpPost 的过滤器
问题描述
我正在创建一个程序,其中有一个包含要过滤的记录的数据库。过滤器有 4 个输入 type="text" 并根据我输入的过滤器返回正确的记录。问题是,当我单击下一页链接(分页列表)时,第二页没有调整过滤器。它失去了我给的过滤器。我知道我必须在 Next Page 链接上给 asp-route 提供一些变量以及过滤器中给出的数据,比如 Microsoft Tutorial 给出 currentFilter,但我有 4 个这样的过滤器:Name=x&Phone=y&...
这是我的控制器代码简单化:
public async Task<IActionResult> Index( some variables ){
var appusers = from a in _context.AppUsers
select a;
return(return View(await app.PaginatedList<AppUser>.CreateAsync(appusers.AsNoTracking(), pageNumber ?? 1, pageSize));)
}
AND
[HttpPost]
public async Task<IActionResult> Index(string Name, string Phone, string Calls, string Date){
var ap = from c in _context.AppUsers
select c;
Filter The database based on variable values Name,Phone,Calls,Date
return View(await PushNotificationApp.PaginatedList<AppUser>.CreateAsync(ap.AsNoTracking(),
pageNumber?? 1, pageSize));}
这是索引的一部分:
@using (Html.BeginForm("Index", "AppUsers", new { id = "filterForm" }))
{
name="SearchTrips" value="@ViewData["CurrentTrips"]" />
<input id="NameFilterField" type="text" name="Name" />
<input id="PhoneFilterField" type="text" name="Phone" />
<input id="CallsFilterField" type="text" name="Calls" />
<input id="DateFilterField" type="text" pattern="\d{1,2}/\d{1,2}/\d{4}" name="Date" />
<button class="m-3" type="submit" value="submit">Search</button>
}
AND PAGELIST LINK PART :
<div class="p-2 bd-highlight">
<nav aria-label="Page navigation example">
<ul class="pagination">
<li class="page-item">
<a class="page-link MainButton" asp-action="Index"
asp-route-pageNumber="@(Model.PageIndex - 1)"
asp-route-currentFilter="@ViewData["CurrentFilter"]"
class="page-link @prevDisabled">
Previous
</a>
</li>
<li class="page-item">
<a class="page-link MainButton" asp-action="Index"
asp-route-pageNumber="@(Model.PageIndex + 1)"
asp-route-currentFilter="@ViewData["CurrentFilter"]"
Next
</a>
</li>
</ul>
</nav>
</div>
解决方案
问题是,当我单击下一页链接(分页列表)时,第二页没有调整过滤器。它失去了我给的过滤器。
您正在Post
操作中进行过滤,但是当您单击“下一步”链接时,它将转到Get
未过滤的操作。所以,我认为你可以让表单做一个 get 请求,然后在 Get 方法中做过滤器。
我知道我必须在 Next Page 链接上给 asp-route 提供一些变量以及过滤器中给出的数据,比如 Microsoft Tutorial 给出 currentFilter,但我有 4 个这样的过滤器:Name=x&Phone=y&...
4个过滤器是一样的,只是把其他过滤器参数给Next
链接
<a class="page-link MainButton" asp-action="Index"
asp-route-pageNumber="@(Model.PageIndex + 1)"
asp-route-Name="@ViewData["Name"]"
asp-route-Phone="@ViewData["Phone"]"
asp-route-Calls="@ViewData["Calls"]"
asp-route-Date="@ViewData["Date"]"
Next
</a>
推荐阅读
- flutter - generated_plugin_registrant.dart 中的导入不完整
- flutter - 更新时 Flutter SqfliteDatabaseException
- reactjs - 无法与 firebase 实时数据库模拟器交互
- html - 如何防止内容显示在 div 面板下
- python - Pandas:根据另一列中存在的组对一列中的所有值进行归一化,介于 0 和 10 之间
- javascript - 曾经工作的 Google App 脚本现在在 UrlfetchApp 上获得“访问权限未授予或过期”。在 Chrome 浏览器中工作的获取获取
- reactjs - id 为“sc-iseJRi”的组件 styled.p 已动态创建
- azure - 了解 Azure B2C 中即时迁移自定义策略的响应
- android - 我们如何使用 Google Pay 测试错误和失败案例?
- c - 如何在 C 中将 dns 名称转换为主机名字符串?