我有一个扩展方法来执行分页。目录中有23个条目,因此有3页,
简称我的控制器:
public ActionResult Index(int? page)
{
List<ScormModuleInfo> modules = new List<ScormModuleInfo>();
string[] dirs = Directory.GetDirectories(scormRootDir);
int totalResults = dirs.Count();
int pageSize = PageSizeSettings.ScormPackages;
int totalPages = Math.Max(Convert.ToInt32(Math.Ceiling((double)totalResults / pageSize)), 1);
if (page >= 1)
{
int startresult = ((Math.Max(1, **page**) - 1) * pageSize) + 1;
int endresult = Math.Min(startresult + (pageSize - 1), totalResults);
for (int i = startresult; i <= endresult; i++)
{
//more code
}
}
在视图中:
<div class="actions-left">
<%= Html.GlobalisedPageLinks(Amico.Web.Mvc.Extensions.Enums.PageLinksFormat.Empty, Model.CurrentPage, Model.PageSize, Model.Total, x => Url.Action("Index", "Scorm", new { area = "Admin", page = x }))%>
</div>
扩展方法:
public static string GlobalisedPageLinks(this HtmlHelper html, Amico.Web.Mvc.Extensions.Enums.PageLinksFormat format, int currentPage, int pageSize, int totalResults, Func<int, string> pageUrl)
{
int totalPages = Math.Max(Convert.ToInt32(Math.Ceiling((double)totalResults / pageSize)), 1);
int startresult = ((Math.Max(1, currentPage) - 1) * pageSize) + 1;
int endresult = Math.Min(startresult + (pageSize - 1), totalResults);
string pagesText = html.Resource(Resources.Global.PageLinks.PageLinksFormatPages, currentPage, totalPages);
string resultsText = html.Resource(Resources.Global.PageLinks.PageLinksFormatResults, startresult, endresult, totalResults);
string firstText = html.Resource(Resources.Global.PageLinks.First);
string previousText = html.Resource(Resources.Global.PageLinks.Previous);
string nextText = html.Resource(Resources.Global.PageLinks.Next);
string lastText = html.Resource(Resources.Global.PageLinks.Last);
return "<span class='page-links'>" + html.PageLinks(format, currentPage, pageSize, totalResults, pageUrl,
pagesText, resultsText, firstText, previousText, nextText, lastText) + "</span>";
}
我在Math.Max(1,页面)上得到一条红线,用于startresult说明:最佳重载方法是(十进制,十进制)我有一些无效的参数?
答案 0 :(得分:1)
试试这样:
Math.Max(1, page ?? 1)
这是因为Max
方法需要一个整数作为第二个参数,但是你传递的是一个可以为空的整数(你的page
参数被声明为int? page
)。通过使用空合并运算符(??
),如果此参数为null,则表示默认值。