Ich habe eine Sicht mit 1700 Aufzeichnungen. Ich möchte sie mit Ajax paginieren, um die Seitenladung leichter zu machen. Ich bin in der Lage, Paging zu machen und jedes Mal neue Datensätze zu erstellen, basierend auf der ausgewählten Seite.Wie übertrage ich Daten vom Controller zur Ansicht mit IEnumerable Model in MVC?
Das Problem ich nur 10 Indizes in Seite unten am zeigt, die Seite sowie 4 nach links und 5 nach rechts ausgewählt. Jetzt brauche ich den CurrentPage-Wert, den ich jedes Mal von jQuery/ajax an den Controller sende, den ich als Ajax-Datenparameter bekomme. Das Problem besteht darin, den aktuellen Seitenwert dauerhaft anzuzeigen, wenn der nächste Seitenindex ausgewählt wird. Ich bekomme immer den alten Wert und nicht den zuletzt ausgewählten Seitenwert. Ich habe sogar ViewBag anstelle von TempData verwendet, aber keinen Erfolg.
Code anzeigen:
@model IEnumerable<UrCompedDAL.DBModels.SlotMachineModel>
<div class="my-properties">
<table id="tbl_slots" class="table no-margin" data-search="true" data-pagination="false">
<tbody class="orgTbody">
@foreach (var item in Model)
{
<tr>
//Code for Slot list
</tr>
}
</tbody>
</table>
<ul class="paging">
@{
int i = 1;
int pg = Convert.ToInt32(TempData["Current"]);
if (i > 0 || i == ViewBag.PageSize)
{
<li>
<a href="#" class="lipaging"><<</a>
</li>
}
if (pg < 6)
{
for (i = 1; i < 11; i++)
{
<li>
<a href="#" class="lipaging">@i</a>
</li>
}
}
else
{
for (i = pg - 4; i < pg; i++)
{
<li>
<a href="#" class="lipaging">@i</a>
</li>
}
for (i = pg; i < pg + 6; i++)
{
<li>
<a href="#" class="lipaging">@i</a>
</li>
}
}
if (i > 1 || i < ViewBag.PageSize)
{
<li>
<a href="#" class="lipaging">>></a>
</li>
}
}
</ul>
</div>
<script>
$(document).ready(function() {
$('.lipaging').click(function() {
$("#loadingDiv").show();
$(this).addClass('active');
var pageThis = $(this).text();
var current = @TempData["Current"];
if (pageThis == '>>') {
pageThis = current +1;
}
if (pageThis == '<<') {
pageThis = current -1;
}
$.ajax({
type: 'get',
url: '@Url.Action("Index", "Game_SlotMachine")',
data: {
CurrentPage: pageThis
}
}).done(function (data) {
var startIndex = data.indexOf("<tbody");
var endIndex = data.indexOf("</tbody>");
var html = data.substring(startIndex, endIndex + 8);
$('#tbl_slots').html('');
$('#tbl_slots').html(html);
setTimeout(function() {
filter();
}, 300);
$("#loadingDiv").hide();
});
});
Controller-Code:
public ActionResult Index(int id = 0, int CurrentPage = 1)
{
List<SlotMachineModel> slotmodel = new List<SlotMachineModel>();
slotmodel = UrCompedDAL.DataAccessor.Instance.GameAccessor.GetAllSlotMachines().ToList();
ViewBag.PageSize = slotmodel.Count/10;
TempData["Current"] = CurrentPage;
slotmodel = slotmodel.Skip((CurrentPage - 1) * 10).Take(10).ToList();
return View(slotmodel);
}
Bitte helfen.
Bitte http://stackoverflow.com/help/mcve lesen - „Wie ein Minimal, komplett erstellen , und überprüfbares Beispiel ". Dies ist nur ein Code-Dump und Sie erwarten, dass wir uns darauf einlassen. –
@PeterB Alles ist relevant für das Problem, deshalb gebucht. Ich mache Client-Seiten-Paging, also brauche ich einen Weg, wo ich Werte in etwas anderem als Model wie ViewBag speichern kann, das persistent bleibt. –