Представления в ASP.NET Core MVC. Генерация ссылок

Трудно себе представить хотя бы одно даже мелкое веб-приложение без каких-либо ссылок. Самый простой способ определить ссылку — это создать html-элемент <a></a>, но в ASP.NET Core MVC для работы со ссылками предусмотрены свои html-хэлперы о которых и пойдет далее речь.

Html.ActionLink

Метод ActionLink() создает гиперссылку на действие контроллера. Например, создадим новое приложение ASP.NET Core MVC и создадим в представлении Views/Home/Index.cshtml ссылку на какое-нибудь действие контроллера HomeController, например, на Privacy():

@{
    ViewData["Title"] = "Home Page";
}

<p>Это @Html.ActionLink("ссылка на Privacy","Privacy")</p>

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

Так как действие относится к тому же контроллеру, который и возвращает результат действия, то мы использовали версию хэлпера с двумя параметрами — текстом ссылки и названием действия:

@Html.ActionLink("ссылка на Privacy","Privacy")

в результате, будет сгенерирован следующий html-элемент:

<a href="/Home/Privacy">ссылка на Privacy</a>

Если же мы хотим сослаться на другой контроллер, то можно воспользоваться такой версией метода ActionLink()

@Html.ActionLink("ссылка на действие другого контроллера", "Edit", "AnotherController")

где Edit — имя действия в контроллере AnotherController.

Если в действии контроллера на который мы хотим создать ссылку имеются параметры, то мы также можем включить их в метод. Например, определим следующее действие контроллера HomeController:

public IActionResult Post(int id, bool draft)
{
    return Ok();
}

параметр id — это параметр маршрута, шаблон которого определен в Program.cs и выглядит следующим образом:

{controller=Home}/{action=Index}/{id?}

draft — это параметр запроса. Теперь добавим ссылку в наше представление:

@Html.ActionLink("ссылка на действие с параметрами", "Post",new {id=4, draft=false} )

в третьем параметре мы передаем анонимный тип с перечислением всех параметров, которые необходимо вставить в ссылку. В итоге получим вот такой html-элемент:

<a href="/Home/Post/4?draft=False">ссылка на действие с параметрами</a>

Кроме этого, ещё одна перегруженная версия ActionLink позволяет устанавливать необходимые атрибуты для html-элемента, что особенно актуально, когда мы используем в работе какие-нибудь css-фреймворки типа bootstrap:

@Html.ActionLink("ссылка на действие с параметрами", "Post",new {id=4, draft=false}, new{ id = "link", @class = "anchor"} );

результатов выполнения будет следующая ссылка в html:

<a class="anchor" href="/Home/Post/4?draft=False" id="link">ссылка на действие с параметрами</a>;

здесь были добавлены два атрибута —id и class для тега a.

Html.RouteLink

Этот метод действует аналогично ActionLink, но только использует для создания ссылки название маршрута. Например, у нас в приложении определен следующий маршрут (в файле Program.cs)

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

для этого маршрута мы можем создать такую ссылку:

@Html.RouteLink("default link", "default", new{action="Privacy"})

в итоге будет сформирован следующий html-элемент

<a href="/Home/Privacy">default link</a>

Аналогично методу ActionLink в методе RouteLink мы можем указывать параметры маршрута, параметры запроса и атрибуты html-элемента.

Итого

Для генерации ссылок в ASP.NET Core MVC предусмотрено два хэлпера — ActionLink и RouteLink. Первый хэлпер использует для генерации ссылок названия действий и контроллеров, второй — названия маршрутов.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии