我是ajax / C#sharp的新手,当用户向下滚动时,我试图找出从数据库中获取更多项目的最佳方式。
我有一个网页,其中有很多评论(像Twitter这样的东西),它首先显示前19条评论。
哪种方法可以达到最低点并使数据库显示下19条评论等等?
这是我的代码:
C#Sharp代码包含HTML
@foreach (var photo in db.Query(photos, galleryId))
{
var hash2 = "@" + photo.UserName;
<div class="comment1" class="com-@photo.Id">
<div class="comment2">
<div class="doce">
<div class="uno_2">
<div class="picpic">
<img alt="miniatura" style="display: none" src="@Href("~/Photo/Thumbnail3", photo.UserId, new { size="medium" })" />
</div>
</div>
<div class="dos_2">
<strong>
<a href="~/User/View/@photo.UserId" class="nombresito" title="Ver el perfil de @(photo.Nombre)">@photo.Nombre @photo.Apellido </a><span class="hash">@hash2</span>
</strong>
</div>
</div>
<div class="veintidos_2">
<div class="tres_3">
<div class="commenttext">@photo.CommentText</div>
</div>
</div>
</div>
</div>
}
Javascript(由onLoad()函数自动触发
var xmlhttp;
var link = "/more?more=" + 19;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("com1").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("POST", link, true);
xmlhttp.send();
C#Sharp
@{
var db = Database.Open("PhotoGallery");
var galleryId = UrlData[0].AsInt();
var more = Request.QueryString["more"];
var photos = "SELECT TOP 19 * FROM Photos INNER JOIN UserProfiles ON Photos.UserId = UserProfiles.UserId ORDER BY Id DESC";
}
答案 0 :(得分:0)
我认为此链接可能对您有所帮助: http://www.sanwebe.com/2013/05/auto-load-records-on-page-scroll/comment-page-1
它的后端专注于PHP,但您可以轻松地使用ASP.NET轻松完成。您可以按原样保留javascript,除了少量修改。最重要的是,您应该更换帖子请求uri
$.post('~/api/LoadMore',{'page': track_load}, function(data){
然后,在你的asp.net mvc web api中,你应该有一个匹配名称的方法
IEnumerable<Comment> LoadMore(int page)
{
//Return comments
}
如果您对网络API感到困惑,可以从这里开始:http://www.asp.net/web-api