【发布时间】:2019-06-13 04:21:40
【问题描述】:
我正在关注 ASP.NET Core Razor Pages 的 Microsoft 官方教程,并且正在调整位于 here 的分页部分以适用于我的网站。
public async Task OnGetAsync(string sortOrder,
string currentFilter, string searchString, int? pageIndex)
{
CurrentSort = sortOrder;
NameSort = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
DateSort = sortOrder == "Date" ? "date_desc" : "Date";
if (searchString != null)
{
pageIndex = 1;
}
else
{
searchString = currentFilter;
}
CurrentFilter = searchString;
IQueryable<Student> studentIQ = from s in _context.Student
select s;
if (!String.IsNullOrEmpty(searchString))
{
studentIQ = studentIQ.Where(s => s.LastName.Contains(searchString)
|| s.FirstMidName.Contains(searchString));
}
switch (sortOrder)
{
case "name_desc":
studentIQ = studentIQ.OrderByDescending(s => s.LastName);
break;
case "Date":
studentIQ = studentIQ.OrderBy(s => s.EnrollmentDate);
break;
case "date_desc":
studentIQ = studentIQ.OrderByDescending(s => s.EnrollmentDate);
break;
default:
studentIQ = studentIQ.OrderBy(s => s.LastName);
break;
}
int pageSize = 3;
Student = await PaginatedList<Student>.CreateAsync(
studentIQ.AsNoTracking(), pageIndex ?? 1, pageSize);
}
对于我的网站,SearchString 的等价物是一个多选选择框。这作为字符串数组传递到页面。我找不到任何有关如何将其格式化为适用于普通字符串的链接的 cshtml 部分的文档。
基本上我需要让下面的 asp-route-currentFilter 为字符串数组工作。
<a asp-page="./Index"
asp-route-sortOrder="@Model.CurrentSort"
asp-route-pageIndex="@(Model.Student.PageIndex - 1)"
asp-route-currentFilter="@Model.CurrentFilter"
class="btn btn-default @prevDisabled">
Previous
</a>
<a asp-page="./Index"
asp-route-sortOrder="@Model.CurrentSort"
asp-route-pageIndex="@(Model.Student.PageIndex + 1)"
asp-route-currentFilter="@Model.CurrentFilter"
class="btn btn-default @nextDisabled">
Next
</a>
我应该改变什么来做到这一点?
【问题讨论】:
-
你的意思是要多条件过滤吧?
-
我想使用具有“multiple”属性的选择框进行过滤。这在 URL 中显示为 localhost:44386/MyPage?SearchString=foo&SearchString=bar,但作为字符串数组进入我的 C#。
-
试试这个:var result = from p in studentIQ where searchString.Any(val => p.LastName.Contains(val)) select p;
-
我知道该怎么做,这是我正在努力处理的下一页和上一页链接。
-
@AndyL 你有没有想过这个问题?我有同样的问题。
标签: c# razor asp.net-core razor-pages