MVC 4在部分视图中使用分页列表

编程入门 行业动态 更新时间:2024-10-25 04:27:27
本文介绍了MVC 4在部分视图中使用分页列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试在局部视图中实现PagedList.

I am trying to implement PagedList in a partial view.

描述视图设置.我有Controller A with ViewA.这是父视图,并且具有自己的模型.然后,我有了Controller B with PartialViewB,并且也有自己的模型.然后我在ViewA中有一个Div,将用于显示PartialViewB.我可以在按下按钮后加载PartialViewB,然后在再次按下按钮后隐藏视图.在PartialViewB中是PagedList.点击下一页按钮将加载下一页,但会将其加载到自己的页面中,而不是以前的ViewA中.

Describing the view setup. I have Controller A with ViewA. This is the parent view and has its own model. Then I have Controller B with PartialViewB and has its own model as well. Then I have a Div in ViewA that will be used to display the PartialViewB. I can load in PartialViewB after hitting a button and then hide the view after hitting the button again. Within the PartialViewB is the PagedList. Hitting the next page button loads the next page, but loads it in its own page, not in the ViewA as it was before.

我可以根据需要加载更多代码,但现在这里是Pager

I can load up more code as needed, but for now here is the 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 ::

:::

父视图

<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

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

BundleConfig.cs

public class BundleConfig { // For more information on Bundling, visit go.microsoft/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 modernizr 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")); } }

推荐答案

查看以下内容:相关的SO问题

这将使用不引人注目的ajax为您完成替换.您只需要处理获取操作并跳过最后,然后将新的局部视图与模型一起发回即可.

This will use unobtrusive ajax to do the replace for you. You just need to handle the fetch and skip on your end and send back the new partial view along with the model.

@Html.PagedListPager(Model, page => Url.Action("ViewComments", page }), PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing( new AjaxOptions(){ HttpMethod = "GET", UpdateTargetId = "partialContainerYouNeedToReplace"}))

执行此操作时,请确保页面上引用的js不干扰.它是MVC附带的现成产品,您只需要引用该捆绑软件即可.

Make sure that you have unobtrusive js referenced on your page when doing this. It comes with MVC out of the box and you should just need to reference the bundle.

希望这会有所帮助.

更多推荐

MVC 4在部分视图中使用分页列表

本文发布于:2023-11-15 10:35:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1593661.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分页   视图   列表   MVC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!