Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

X.PagedList.Mvc.Core: Improve nullable handling for generatePageUrl #273

Merged
merged 1 commit into from
Jul 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/X.PagedList.Mvc.Core/Fluent/HtmlPagerBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ internal sealed class HtmlPagerBuilder : IHtmlPagerBuilder
private readonly IHtmlHelper _htmlHelper;
private readonly IPagedList _pagedList;

private Func<int, string> _generatePageUrl;
private Func<int, string?> _generatePageUrl;
private PagedListRenderOptions _options;
private string? _partialViewName;

Expand All @@ -21,7 +21,7 @@ public HtmlPagerBuilder(IHtmlHelper htmlHelper, IPagedList pagedList)
_options = new PagedListRenderOptions();
}

public IHtmlPagerBuilder Url(Func<int, string> builder)
public IHtmlPagerBuilder Url(Func<int, string?> builder)
{
_generatePageUrl = builder;

Expand Down
2 changes: 1 addition & 1 deletion src/X.PagedList.Mvc.Core/Fluent/IHtmlPagerBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace X.PagedList.Mvc.Core.Fluent;
[PublicAPI]
public interface IHtmlPagerBuilder
{
IHtmlPagerBuilder Url(Func<int, string> builder);
IHtmlPagerBuilder Url(Func<int, string?> builder);

IHtmlPagerBuilder DisplayLinkToFirstPage(PagedListDisplayMode displayMode = PagedListDisplayMode.Always);

Expand Down
16 changes: 8 additions & 8 deletions src/X.PagedList.Mvc.Core/HtmlHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ private TagBuilder WrapInListItem(TagBuilder inner, PagedListRenderOptions? opti
return li;
}

private TagBuilder First(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
private TagBuilder First(IPagedList list, Func<int, string?> generatePageUrl, PagedListRenderOptions options)
{
const int targetPageNumber = 1;
var first = _tagBuilderFactory
Expand All @@ -92,7 +92,7 @@ private TagBuilder First(IPagedList list, Func<int, string> generatePageUrl, Pag
return WrapInListItem(first, options, "PagedList-skipToFirst");
}

private TagBuilder Previous(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
private TagBuilder Previous(IPagedList list, Func<int, string?> generatePageUrl, PagedListRenderOptions options)
{
var targetPageNumber = list.PageNumber - 1;
var previous = _tagBuilderFactory
Expand All @@ -117,7 +117,7 @@ private TagBuilder Previous(IPagedList list, Func<int, string> generatePageUrl,
return WrapInListItem(previous, options, options.PreviousElementClass);
}

private TagBuilder Page(int i, IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
private TagBuilder Page(int i, IPagedList list, Func<int, string?> generatePageUrl, PagedListRenderOptions options)
{
var format = options.FunctionToDisplayEachPageNumber
?? (pageNumber => string.Format(options.LinkToIndividualPageFormat, pageNumber));
Expand Down Expand Up @@ -145,7 +145,7 @@ private TagBuilder Page(int i, IPagedList list, Func<int, string> generatePageUr
return WrapInListItem(page, options);
}

private TagBuilder Next(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
private TagBuilder Next(IPagedList list, Func<int, string?> generatePageUrl, PagedListRenderOptions options)
{
var targetPageNumber = list.PageNumber + 1;
var next = _tagBuilderFactory
Expand All @@ -170,7 +170,7 @@ private TagBuilder Next(IPagedList list, Func<int, string> generatePageUrl, Page
return WrapInListItem(next, options, options.NextElementClass);
}

private TagBuilder Last(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options)
private TagBuilder Last(IPagedList list, Func<int, string?> generatePageUrl, PagedListRenderOptions options)
{
var targetPageNumber = list.PageCount;
var last = _tagBuilderFactory
Expand Down Expand Up @@ -213,7 +213,7 @@ private TagBuilder ItemSliceAndTotalText(IPagedList list, PagedListRenderOptions
return WrapInListItem(text, options, "PagedList-pageCountAndLocation", "disabled");
}

private TagBuilder PreviousEllipsis(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options, int firstPageToDisplay)
private TagBuilder PreviousEllipsis(IPagedList list, Func<int, string?> generatePageUrl, PagedListRenderOptions options, int firstPageToDisplay)
{
var previous = _tagBuilderFactory
.Create("a");
Expand All @@ -240,7 +240,7 @@ private TagBuilder PreviousEllipsis(IPagedList list, Func<int, string> generateP
return WrapInListItem(previous, options, options.EllipsesElementClass);
}

private TagBuilder NextEllipsis(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options, int lastPageToDisplay)
private TagBuilder NextEllipsis(IPagedList list, Func<int, string?> generatePageUrl, PagedListRenderOptions options, int lastPageToDisplay)
{
var next = _tagBuilderFactory
.Create("a");
Expand Down Expand Up @@ -269,7 +269,7 @@ private TagBuilder NextEllipsis(IPagedList list, Func<int, string> generatePageU

#endregion Private methods

public string? PagedListPager(IPagedList? pagedList, Func<int, string> generatePageUrl, PagedListRenderOptions options)
public string? PagedListPager(IPagedList? pagedList, Func<int, string?> generatePageUrl, PagedListRenderOptions options)
{
var list = pagedList ?? new StaticPagedList<int>(ImmutableList<int>.Empty, 1, 10, 0);

Expand Down
4 changes: 2 additions & 2 deletions src/X.PagedList.Mvc.Core/HtmlHelperExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public static class HtmlHelperExtension
///<returns>Outputs the paging control HTML.</returns>
public static HtmlString PagedListPager(this IHtmlHelper html,
IPagedList? list,
Func<int, string> generatePageUrl)
Func<int, string?> generatePageUrl)
{
return PagedListPager(html, list, generatePageUrl, new PagedListRenderOptions());
}
Expand All @@ -36,7 +36,7 @@ public static HtmlString PagedListPager(this IHtmlHelper html,
///<returns>Outputs the paging control HTML.</returns>
public static HtmlString PagedListPager(this IHtmlHelper html,
IPagedList? list,
Func<int, string> generatePageUrl,
Func<int, string?> generatePageUrl,
PagedListRenderOptions options)
{
HtmlHelper htmlHelper = new HtmlHelper(new TagBuilderFactory());
Expand Down