MVC 4 Mit Ausgelagerten Liste in einer Teilansicht

Bin ich versucht zu implementieren PagedList in einer Teilansicht.

Beschreibung der Sicht setup. Ich habe Controller A with ViewA. Dies ist die übergeordnete Ansicht und hat sein eigenes Modell. Dann habe ich Controller B with PartialViewB und hat sein eigenes Modell als gut. Dann habe ich ein Div in ViewA verwendet werden, um die Anzeige der PartialViewB. Ich kann laden in PartialViewB nach dem drücken einer Taste und dann ausblenden der anzeigen nach drücken der-Taste erneut. Innerhalb der PartialViewB ist die PagedList. Schlagen Sie die nächste Seite-Schaltfläche lädt die nächste Seite, aber lädt es in seine eigene Seite, nicht in der ViewA wie es vorher war.

Kann ich laden, bis mehr code als nötig, aber für jetzt, hier ist die Pager -

<br />
    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount

    @Html.PagedListPager(Model, page => Url.Action("ViewComments",
    new { courseID = @ViewBag.courseID, page }), 
    new PagedListRenderOptions { MaximumPageNumbersToDisplay = 5, DisplayLinkToFirstPage = PagedListDisplayMode.IfNeeded, 
        DisplayLinkToLastPage = PagedListDisplayMode.IfNeeded })

::EDIT::

Übergeordneten Ansicht

<div class="Comments">
    <input type="button" id="View" class="CommentsButton" value="View Comments"/>
    <input type="hidden" id="Hidden" value="false" />
</div>
<div id="Comments">
</div>

PartialView

@model PagedList.IPagedList<QIEducationWebApp.Models.CourseComment>
@using PagedList.Mvc;

@{
    ViewBag.Title = "Comments";
}

<h2>Comments!</h2>

<table>

@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.CommentDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.CommentText)
        </td>
    </tr>
}

</table>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

<appSettings>
  <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings>

<br />
    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount

    @Html.PagedListPager(Model, page => Url.Action("ViewComments",
    new { courseID = @ViewBag.courseID, page }),
            PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(
                new PagedListRenderOptions { MaximumPageNumbersToDisplay = 5, DisplayLinkToFirstPage = PagedListDisplayMode.IfNeeded, 
                DisplayLinkToLastPage = PagedListDisplayMode.IfNeeded },
                new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "Comments" }))

BundleConfig.cs

public class BundleConfig
    {
        //For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                        "~/Scripts/jquery-ui-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*"));

            //Use the development version of Modernizr to develop with and learn from. Then, when you're
            //ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css", "~/Content/PagedList.css"));

            bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                        "~/Content/themes/base/jquery.ui.core.css",
                        "~/Content/themes/base/jquery.ui.resizable.css",
                        "~/Content/themes/base/jquery.ui.selectable.css",
                        "~/Content/themes/base/jquery.ui.accordion.css",
                        "~/Content/themes/base/jquery.ui.autocomplete.css",
                        "~/Content/themes/base/jquery.ui.button.css",
                        "~/Content/themes/base/jquery.ui.dialog.css",
                        "~/Content/themes/base/jquery.ui.slider.css",
                        "~/Content/themes/base/jquery.ui.tabs.css",
                        "~/Content/themes/base/jquery.ui.datepicker.css",
                        "~/Content/themes/base/jquery.ui.progressbar.css",
                        "~/Content/themes/base/jquery.ui.theme.css"));
        }
    }
  • Wie viel Daten werden in der Regel gesendet, um diese partielle Sicht? Sie tatsächlich benötigen, server-side paging?
  • So sein wird, eine Liste von Kommentaren, die in einer Datenbank gespeichert werden. Natürlich sind Sie befestigt, die Benutzer, Datum und Kommentar. Also sicher nicht die beste zu sein.
  • Ich sehe nicht ein Verweis auf jquery.unobtrusive-ajax.js. Gehen Sie zu App_Start > BundleConfig.cs und sehen, ob es ein bundle mit dieser Referenz. Auch stellen Sie sicher, dass der unobtrusive-ajax-Datei ist auch in Ihrer Lösung.
  • Die jquery.unobtrusive-ajax.js im scripts-Verzeichnis, aber es ist nicht in der BundleConfig.cs.
  • Ich habe gelogen, vielleicht ist es.
  • Seine Arbeit! Danke!!!

InformationsquelleAutor C-Pfef | 2015-07-10
Schreibe einen Kommentar