I use sample ajax request on my asp application, but it returns dublicated data from database. Already tried to debug using breakpoints, but nothing works. I think there is something problem with my Controller code, but I can't understand what.
Here is my code on ajax request in Controller:
if (Request.IsAjaxRequest())
{
var messs1 = db.Messages
.Where(m => m.UserAddressat.Id == us.Id && m.UserAuthor.Name == User.Identity.Name)
.ToList();
var messs2 = db.Messages
.Where(m => m.UserAddressat.Name == User.Identity.Name && m.UserAuthor.Id == id)
.ToList();
MessagingModel model2 = new MessagingModel();
model2.OldMessages = messs1.Union(messs2)
.OrderByDescending(s => s.CreatedDate)
.Skip(20)
.Take(20)
.Reverse();
return PartialView("_Messaging", model2);
}
And my partial view "_Messaging":
@model BloodBank.Models.MessagingModel
@if (Model.OldMessages != null)
{
foreach (var message in Model.OldMessages)
{
if (message.UserAuthor.Name == User.Identity.Name)
{
<p>
<b style="float:left">@message.UserAuthor.Name @message.UserAuthor.Lastname: </b>
<div class="MessTo">
@message.Value <br /> <i class="messageDateDiv">@message.CreatedDate.ToUniversalTime()</i>
</div>
</p>
}
else
{
<p>
<b style="float:left">@message.UserAuthor.Name @message.UserAuthor.Lastname: </b>
<div class="MessFrom">
@message.Value <br /><i class="messageDateDiv">@message.CreatedDate.ToUniversalTime()</i>
</div>
</p>
}
}
}
I get just 20 message data when page loads(HttpGet). Ajax request is for getting 20 older message from database asynchronally. But the problem is that, If I have 22 data, on Ajax request I get 4 message instead of 2 (for example I get "21 22 21 22" instead of "21 22"). Breakpoints show me that, when code goes still the end of Controller and return data to partialview, it returns to the top of controller code and begins again same way. I just can't figure out what's happening.