Ответ 1
В ASP.NET MVC есть встроенные помощники ajax, которые могут охватывать основные сценарии.
Вам необходимо установить и передать jquery.unobtrusive-ajax
библиотеку JavaScript (+ jQuery). Затем в главном представлении (скажем, index.cshtml) введите следующий код:
Index.cshtml
@Ajax.ActionLink("Load More Posts", "MorePosts", new AjaxOptions()
{
HttpMethod = "GET",
AllowCache = false,
InsertionMode = InsertionMode.InsertAfter,
UpdateTargetId = "posts-wrapper"
})
<div id="posts-wrapper"></div>
Примечание: @Ajax.ActionLink
хелпер принимает параметр AjaxOptions
для дополнительных настроек.
В контроллере (скажем HomeController.cs) вы должны вернуть PartialViewResult
:
public ActionResult MorePosts(int? offset, int? count)
{
IEnumerable<Post> posts = myService.GetNextPosts(offset, count);
return PartialView(posts);
}
Наконец, вы определяете частичный вид MorePosts.cshtml:
@model IEnumerable<Post>
@{
Layout = null;
}
@foreach (var post in Model)
{
<div class="post">
<div>>@post.Prop1</div>
<div>@post.Prop2</div>
</div>
<hr />
}
И что это. Когда какой-либо пользователь нажимает кнопку Load More
, будет загружено больше сообщений.
Примечание 1: вы можете реализовать функцию OnBegin
для реализации фактической логики для принятия решения о том, какие следующие сообщения для загрузки (например, получить идентификатор последнего загруженного сообщения и отправить его на сервер).
Примечание 2: тот же результат может быть достигнут с помощью пользовательских вызовов jQuery.ajax
(без jquery.unobtrusive). Единственными отличиями будут ручные вызовы ajax и события click.
Надеюсь, это поможет. При необходимости я могу написать более полный пример.