AJAX-ссылки

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Другим часто используемым AJAX-хелпером является Ajax.ActionLink. Он во многом похож на хелпер Ajax.BeginForm за тем исключением, что генерирует специальные ajax-ссылки. Посмотрим на примере. Добавим в представление следующую разметку:

<div id="bestbook">
    @Ajax.ActionLink("Лучшая книга", "BestBook", 
			new AjaxOptions{ UpdateTargetId="bestbook"})
</div>

В данном случае мы также используем объект AjaxOptions для установки параметров асинхронной ссылки, который принимает все те же параметры, что и в случае с ajax-формой.

Мы помещаем ссылку в элемент с id, который указывается в параметре UpdateTargetId. Таким образом, результат запроса будет замещать ссылку. Но для работы нам также необходимо, как и в случае с ajax-формой, действие контроллера и вызываемое им частичное представление.

Метод контроллера, в данном случае BestBook, будет просто возвращать первую книгу:

public ActionResult BestBook()
{
    Book book = db.Books.First();
    return PartialView(book);
}

А вызываемое им частичное представление BestBook.cshtml будет выводить информацию об этой книге:

@model AjaxMvcApplication.Models.Book
<h3>Лучшая книга</h3>
@Html.DisplayForModel()

AJAX-ссылка будет отображена при запуске как обычная ссылка:

А после нажатия она будет заменена полученным от сервера контентом:

В качестве примера можно также изменить код представления из предыдущего раздела про ajax-формы, применив ajax-ссылки:

@using (Ajax.BeginForm("BookSearch", new AjaxOptions { UpdateTargetId = "results"}))
{
    <input type="text" name="name" />
    <input type="submit" value="Поиск" />
}

<div id="results"></div>
<br />
@foreach(string s in ViewBag.Authors)
{
    <div style="margin-right:8px;float:left;">
        @Ajax.ActionLink(s, "BookSearch", new {name=s},new AjaxOptions{ UpdateTargetId="results"})
    </div>
}
@Scripts.Render("~/scripts/jquery-1.10.2.min.js")
@Scripts.Render("~/scripts/jquery.unobtrusive-ajax.min.js")

В итоге все авторы, передаваемые в представление через ViewBag (например, так: ViewBag.Authors = db.Books.Select(s => s.Author).Distinct();), выводятся в виде ссылок внизу страницы. А нажатие на одну из этих ссылок будет иметь то же действие, что и поиск по кнопке:

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850