我在我的asp应用程序上使用了样本ajax请求,但是它从数据库返回了dublicated数据。已经尝试使用断点进行调试,但没有任何作用。我认为我的Controller代码存在问题,但我无法理解。
这是我在Controller中的ajax请求的代码:
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);
}
我的部分观点" _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>
}
}
}
页面加载时我只收到20条消息数据(HttpGet)。 Ajax请求用于异步从数据库获取20条旧消息。但问题是,如果我有22个数据,在Ajax请求上我得到4个消息而不是2个(例如我得到&#34; 21 22 21 22&#34;而不是&#34; 21 22&#34;) 。断点告诉我,当代码仍然是Controller的结束并将数据返回到partialview时,它返回到控制器代码的顶部并以相同的方式再次开始。我无法弄清楚发生了什么。