0

ページネーションを行う拡張メソッドがあります。ディレクトリには 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>";
 }

Startresult の Math.Max(1, page) に赤い線が表示されます。最適なオーバーロード メソッドは (10 進数、10 進数) です。無効な引数がありますか?

4

1 に答える 1

1

このようにしてみてください:

Math.Max(1, page ?? 1) 

この理由は、Maxメソッドが 2 番目の引数として整数を想定しているのに、null 許容整数を渡しているためです (pageパラメーターは として宣言されていますint? page)。null 合体演算子 ( ??) を使用すると、このパラメータが null の場合にデフォルト値を示します。

于 2013-03-11T09:31:11.330 に答える