gpt4 book ai didi

带有部分 View 的 AJAX 分页列表

转载 作者:行者123 更新时间:2023-12-04 10:07:19 24 4
gpt4 key购买 nike

我不太清楚如何使用 ajax 获取局部 View 以呈现分页列表。

我让它最接近工作的是来自 Using paging in partial view, asp.net mvc 的示例。

我基本上是在尝试创建一个页面,其中包含每个用户的评论列表,该页面可以以与 stackoverflow 用户页面上的答案选项卡相同的方式进行更改。

在第一次单击寻呼机时分页工作正常,但是一旦我再次单击寻呼机,就会返回部分 View 。

Controller :

public class ProductController : Controller
{
public IQueryable<Product> products = new List<Product> {
new Product{ProductId = 1, Name = "p1"},
new Product{ProductId = 2, Name = "p2"},
new Product{ProductId = 3, Name = "p3"},
new Product{ProductId = 4, Name = "p4"},
new Product{ProductId = 5, Name = "p5"}
}.AsQueryable();

public object Index()
{
return View();
}

public object Products(int? page)
{
var pageNumber = page ?? 1; // if no page was specified in the querystring, default to the first page (1)
var onePageOfProducts = products.ToPagedList(pageNumber, 3); // will only contain 25 products max because of the pageSize

ViewBag.OnePageOfProducts = onePageOfProducts;
return PartialView("_Products");
}
}

意见:

索引.cshtml:
<link href="/Content/PagedList.css" rel="stylesheet" type="text/css" />

<h2>List of Products</h2>

<div id="products">
@Html.Action("Products", "Product")
</div>


@section scripts{

<script type="text/javascript">
$(function() {
$('#myPager').on('click', 'a', function() {
$.ajax({
url: this.href,
type: 'GET',
cache: false,
success: function(result) {
$('#products').html(result);
}
});
return false;
});
});
</script>
}

_Products.cshtml:
@using PagedList.Mvc;
@using PagedList;


<ul>
@foreach(var product in ViewBag.OnePageOfProducts){
<li>@product.Name</li>
}
</ul>

<!-- output a paging control that lets the user navigation to the previous page, next page, etc -->
<div id="myPager">
@Html.PagedListPager((IPagedList)ViewBag.OnePageOfProducts, page => Url.Action("Products", new { page }))
</div>

模型
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
}

谁能告诉我我做错了什么?

最佳答案

我最终使用了 pagedlist 源 [https://github.com/troygoode/PagedList][1]] 中不显眼的 ajax 示例。

部分观点:

@using PagedList;
@using PagedList.Mvc;

<ul id="names" start="@ViewBag.Names.FirstItemOnPage">
@foreach(var i in ViewBag.Names){
<li>@i</li>
}
</ul>

@Html.PagedListPager((IPagedList)ViewBag.Names, page => Url.Action("Index", new { page }), PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing( new AjaxOptions(){ HttpMethod = "GET", UpdateTargetId = "unobtrusive"}))

指数:
@{
ViewBag.Title = "Unobtrusive Ajax";
}
@using PagedList;
@using PagedList.Mvc;

@Styles.Render("~/Content/PagedList.css")

<h2>Unobtrusive Ajax</h2>

<p>Example of paging a list:</p>
<div id="unobtrusive">
@Html.Partial("UnobtrusiveAjax_Partial")
</div>

Controller :
  public class UnobtrusiveAjaxController : BaseController
{
// Unobtrusive Ajax
public ActionResult Index(int? page)
{
var listPaged = GetPagedNames(page); // GetPagedNames is found in BaseController
if (listPaged == null)
return HttpNotFound();

ViewBag.Names = listPaged;
return Request.IsAjaxRequest()
? (ActionResult)PartialView("UnobtrusiveAjax_Partial")
: View();
}
}

关于带有部分 View 的 AJAX 分页列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24679320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com