0

MvcPaging を Ajax モードで動作させようとしていますが、連携していません! 動作しますが、Ajax 呼び出しの代わりに完全な GET を実行します。コントローラ コード Request.IsAjaxRequest() にステップ インすると、正しく動作していないことが示されます。以下は、私のかみそりのビューとコントローラーのコードです。

@using MvcPaging
@model IPagedList<PracWare.Net.patientnote>

    @Scripts.Render("~/bundles/jquery")
<link href="~/Content/paging.css" rel="stylesheet" />
<link href="~/Content/Bootstrap2.3.1.css" rel="stylesheet" />
<div id="notes-list">
        <table width="98%">
            <tr><th>Date</th><th>Notes</th></tr>
            @foreach (var note in Model)
            {
                <tr><td>@note.dateTime</td><td>@note.notes</td></tr>
            }
        </table>

<div id="paging-control">
    @Html.Raw(Ajax.Pager(
        new Options
            {
                PageSize = 5,
                TotalItemCount = Model.TotalItemCount,
                CurrentPage = Model.PageNumber,
                ItemTexts = new ItemTexts() { Next = "Next", Previous = "Previous", Page = "P" },
                ItemIcon = new ItemIcon() { First = "icon-backward", Previous = "icon-chevron-left", Next = "icon-chevron-right", Last = "icon-forward" },
                TooltipTitles = new TooltipTitles() { Next = "Next page", Previous = "Previous page", Page = "Go to page {0}.", First = "Go To First Page", Last = "Go To Last Page" },
                Size = Size.normal,
                Alignment = Alignment.centered,
                IsShowControls = true,
                IsShowFirstLast = true,
            },
        new AjaxOptions
            {
                UpdateTargetId = "notes-list",
                OnBegin = "beginPaging",
                OnSuccess = "successPaging",
                OnFailure = "failurePaging"
            }, new { controller = "Patient", action = "JqAjaxOrders"}))
    </div>
</div>

そしてコントローラーコード:

public ActionResult JqAjaxOrders(int? page)
{
     var db = new PracwareEntities();
     var orders = db.patientnotes.OrderBy(o=>o.dateTime).ToPagedList(page ?? 1, 5);
        if (Request.IsAjaxRequest())
            return PartialView("JqAjaxOrders", orders);
        return View(orders);
}

このコードは、Ajax 呼び出しを正しく実行する MvcPagingDemo ソリューションからそのまま引用しました。私は何を見逃したのでしょうか?

4

1 に答える 1

0

MvcPaging は素晴らしいと思いますが、2 時間かけて頭を画面に打ち付けて動作させることができなかったので、独自の実装を作成しました... 2 時間もかかりませんでした!

コントローラーコード:

   [Authorize]
    public ActionResult ListNotes(int patientId, int? page = 1)
    {
        const int pageSize = 5;
        var db = new PracwareEntities();
        var totalNotes = db.patientnotes.Count(n => n.patientDbId == patientId);
        var notes = db.patientnotes.OrderBy(o => o.dateTime).Skip((int)((page - 1) * pageSize)).Take(pageSize).Where(n => n.patientDbId == patientId).ToList();

        ViewBag.PageCount = GetPageCount(totalNotes, pageSize);
        ViewBag.CurrentPage = page;
        ViewBag.patientId = patientId;
        if (Request.IsAjaxRequest())
            return PartialView("ListNotes", notes);
        return View(notes);
    }

    private static int GetPageCount(int notesCount, int pageSize)
    {
        var x = (double) notesCount/pageSize;
        if (x - (int) x > 0)
            return (notesCount/pageSize) + 1;
        return (notesCount/pageSize);
    }

かみそりビュー:

@if (ViewBag.PageCount > 1)
{
<div id="paging-control" class="pagination ">
    <ul>
        <li class="first">
            @Html.ActionLink("First", "ListNotes", "Patient", 
                             new {ViewBag.patientId, Page = "1" }, new {@Class="update-notes-list "} )
        </li>
        @for (var i = 1; i <= ViewBag.PageCount; i++)
        {
            <li @if (ViewBag.CurrentPage == i) {
                    <text> class="active"</text>
                } >
                @Html.ActionLink(i.ToString(), "ListNotes", "Patient", 
                                 new {ViewBag.patientId, Page = i.ToString() }, new {@Class="update-notes-list"})
            </li>
        }
        <li class="last">
            @Html.ActionLink("Last", "ListNotes", "Patient", 
                             new { ViewBag.patientId, Page = ViewBag.PageCount }, new {@Class="update-notes-list "} )
        </li>
    </ul>
</div>        
}

エレガントではありませんが、締め切りが迫っている場合、解決策がないよりは有効な解決策がある方がよいでしょう!

于 2013-10-21T10:01:47.643 に答える