4

みなさんこんにちは、質問があります。PartialViewResult アクションで PagedList を使用して、結果を PartialView に表示できますか?

ここにいくつかのコードがあります

コントローラーコード:

public PartialViewResult CargosPorProyecto(string id, int? page)
    {
        var cargos = db.Cargo.Include(i => i.Proyectos).Where(i => i.NumProyecto.Equals(id)).OrderByDescending(i => i.Fecha);

        if (Request.HttpMethod != "GET")
        {
            page = 1;
        }

        var pageSize = 10;
        var pageNumber = (page ?? 1);
        var onePage = cargos.ToPagedList(pageNumber, pageSize);


        return PartialView("ListaCargosParcial", ViewBag.OnePage = onePage);
    }

私の PartialView では、このコードを配置してページネーションを表示します

<div class="pagination-right">
    <div class="span12">
       <%: Html.PagedListPager((IPagedList)ViewBag.OnePage, page => Url.Action("CargosPorProyecto", new { page = page }), new PagedListRenderOptions { LinkToFirstPageFormat = "<< Primera", LinkToPreviousPageFormat = "< Anterior", LinkToNextPageFormat = "Siguiente >", LinkToLastPageFormat = "&Uacute;ltima >>" })%> 
    </div>                    
    </div>

そして、部分ビューを含むページをロードすると、すべてがうまく見えますが、[次へ] をクリックすると (「シギエンテ」) が部分ビューにロードされません。

わかりやすく説明していただければ幸いです。お時間をいただきありがとうございます。

よろしく

4

1 に答える 1

2

同じページにとどまりたい場合は、AJAX を使用できます。たとえば、jQuery を使用している場合、ページネーション リンクのクリック イベントをサブスクライブしてから、対応するコントローラー アクションへの AJAX 要求をトリガーし、返された結果でパーシャルを更新できます。

$(function() {
    $('.pagination-right a').click(function() {
        $.ajax({
            url: this.href,
            type: 'GET',
            cache: false,
            success: function(result) {
                // refresh the contents of some container div for the partial
                // make sure you use the correct selector here
                $('#some_container_for_the_partial').html(result);
            }
        });

        // cancel the default action which is a redirect
        return false;
    });
});
于 2012-06-29T06:45:23.460 に答える