簡體   English   中英

ASP.NET Core Razor Pages多選輸入和分頁

[英]ASP.NET Core Razor Pages multiselect input and pagination

我正在關注ASP.NET Core Razor Pages的官方Microsoft教程,並且正在調整位於此處的分頁部分以適合我的網站。

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>

我應該怎么做才能做到這一點?

asp-route-CurrentFilter無法分配數組。您可以使用@Url.Page分配自定義路由數據。請參閱此處

public string[] CurrentFilter { get; set; }
public async Task OnGetAsync(string sortOrder,string[] currentFilter,string[] searchString,int? pageIndex)

.cshtml:

<a href="@Url.Page("./Index", 
                    new {
                         sortOrder= Model.CurrentSort,
                         currentFilter = Model.CurrentFilter, 
                         pageIndex= Model.Student.PageIndex +1
                    })"
                    class="btn btn-default @nextDisabled">
Next</a>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM