سلام در قطعه کد های زیر من دستور هر بار لود شدن اطلاعات از دیتایس رو گذاشتم مشکل من اینه نمیدونم چرا بعضی وقتا تابع GetData () چند بار فراخوانی میشه و اجرا میشه ! و مثلا میبینی برای متغیر pageindex چند بار مقدار 1 ثبت میشه و اجرا میشه و نتیجش میشه ظاهر شدن چند باکس تکراری ! کسی میتونه مشکلش رو پیدا کنه
قسمت کنترلر :
public ActionResult GetData(int pageIndex)
{
var query = (from a in db.Tbl_UrlUser
where a.Status != null
orderby a.Id descending
select a);
//5 تا 5تا نمایش میدهد باکس
int take = 5;
int Skip = (pageIndex * take) - take;
return PartialView("ProductPartial", query.Skip(Skip).Take(take));
}
قسمت پارشیال ویو: ProductPartial
@foreach (var item in Model)
{
<div class="col-lg-3">
@if (item.pic == null)
{
<a id="thumb" target="_blank" href="~/home/iframe?url=@item.Url"> <img src="~/home/Saveimage?url=@item.Url" width="180" height="180" alt="@item.Url" class="img-responsive img-rounded" targe="blank" ata-toggle="tooltip" data-placement="top" title="@content" /> </a>
<br />
}
else
{
<a id="thumb" target="_blank" href="~/home/iframe?url=@item.Url"> <img src="~/images/@item.pic" width="180" height="180" alt="@item.Url" class="img-responsive img-rounded" targe="blank" data-toggle="tooltip" data-placement="top" title="@content" /> </a>
<br />
}
</div>
}
قسمت ویو (اصلی) کد جاوا اسکریپت (از اینجا صدا زده میشه تابع GetData():
<script type="text/javascript">
var pageIndex = 1;
var size = 1650;
$(document).ready(function () {
//بار اول صدا زده میشود و 5 باکس نمایش میدهد
GetData();
$(window).scroll(function () {
if ($(this).height() <= 768) {
if ($(this).scrollTop() >size) {
// بر اساس سایز اسکرول صفحه سایت دوباره صدا زده میشود تابع زیر
GetData();
size = size + 100;
}
}
});
});
function GetData() {
$.ajax({
type: 'GET',
url: '/home/GetData',
data: { "pageindex": pageIndex },
//dataType: 'json', //Because the GetData now return the partialview content instead if json result
success: function (data) {
if (data != null) {
// اجرا شدن و نمایش باکس ها در ای دی زیر
$("#container").append(data);
//یک واحد اضافه میشود بعد از هر نمایش
pageIndex++;
}
},
beforeSend: function () {
$("#loading").delay(0).fadeIn(9000);
},
complete: function () {
$("#loading").delay(0).hide
(2000);
},
error: function () {
//alert("Error while retrieving data!");
}
});
}
</script>