Non riesco a capire come ottenere una vista parziale per eseguire il rendering di un elenco di pagine usando ajax.A paggina AJAX con vista parziale
Il più vicino che ho preso al lavoro è l'esempio da Using paging in partial view, asp.net mvc
praticamente sto cercando di creare una pagina con un elenco di commenti per utente in cui la pagina può essere modificato nello stesso modo come il scheda risposte nella pagina degli utenti di StackOverflow.
L'impaginazione funziona bene sul primo clic del cercapersone, ma poi la vista parziale è tutto ciò che viene restituito quando faccio nuovamente clic sul cercapersone.
controllore:
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");
}
}
Visualizzazioni:
Index.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>
Girl
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
}
Qualcuno può mostrarmi cosa sto facendo male?
L'ActionResult deve sempre essere indice, o si verrà reindirizzati a qualcosa come regolatore/middleaction/page = 2 & pageSize = dimensione – Lucas
avevo bisogno di inserire il seguente script all'interno di indice per farlo funzionare: Script @section { } – Chesare