2

PagedList.MVC 4.5.0.0 と共に MVC 5 を使用しています。データが戻ってきてテーブルに表示され、ページャー コントロールが表示されます。ただし、[次へ] をクリックすると、ページャーは page = 1 を関数に送信し続けます。デバッグ中に確認してください。

私のページには:

                <div class="pagedList" data-otf-target="#contractList">
                @Html.PagedListPager(Model, page => Url.Action("Index", new { page }), PagedListRenderOptions.MinimalWithItemCountText)
            </div>

データをアクションに送り返す私のメソッドは

        public IPagedList<ContractViewModel> GetAllContracts(int page = 1)
    {
        var lstcontractViewModel = new List<ContractViewModel>();
        using (ContractRepository contractRepos = new ContractRepository(new UnitOfWork()))
        {
            var activeContractList = contractRepos.All.OrderByDescending(x => x.Id);

            foreach (var activeContract in activeContractList)
            {
                Mapper.CreateMap<DomainClasses.ActiveContract, ActiveContractViewModel>().ForMember(dest => dest.ContractorModel, opts => opts.Ignore());

                Mapper.AssertConfigurationIsValid();
                lstcontractViewModel.Add(Mapper.Map<ActiveContractViewModel>(activeContract));
            }
        }

        return lstcontractViewModel.ToPagedList(page, 40);
    }

私のコントローラーのアクションは

        public ActionResult Index()
    {
        var contracts = activeaccountController.GetAllContracts(); 
        return View(contracts);
    }

GetAllContracts メソッドが呼び出されると、デバッガーはページが常に = 1 であることを示します。そのため、ページングは​​常に結果の最初のページのみを返します。私は2500以上のレコードを持っているので、他のデータがあります.ページャーもそれを示しているので、ページャーは「2546のアイテム1から40を表示しています.

4

1 に答える 1

1
@Html.PagedListPager(Model, page => Url.Action("Index", new { page }), PagedListRenderOptions.MinimalWithItemCountText)

new{page = somevalue} を設定しようとすると、パラメーターが送信されます。

Public ActionResult Index(int page) 

public IPagedList<ContractViewModel> GetAllContracts(int page = 1)

これは、他のパラメーターが適用されていない場合、ページがデフォルト 1 であることを意味します。

var contracts = activeaccountController.GetAllContracts(page); 

詳細については、https://github.com/TroyGoode/PagedListを参照してください。

于 2014-04-22T19:55:19.143 に答える