2013-10-20 2 views
0

Ajax 모드에서 MvcPaging 작동을 시도하고 있지만 협조가 아닙니다! 작동하지만 Ajax 호출 대신 완전한 GET을 수행합니다. 컨트롤러 코드를 밟아 가면 Request.IsAjaxRequest()가 false가되어 제대로 작동하지 않는다는 것을 나타냅니다.Mvcpaging Ajax 모드가 작동하지 않습니다.

@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 솔루션에서 바로이 코드를했다 아래 내 면도기 뷰와 컨트롤러 코드입니다. 나는 무엇을 놓쳤을까요?

답변

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>   
} 

우아한 아니지만,이 작업 솔루션이 어떤 솔루션보다 낫다!

관련 문제