Содержание
Трудно себе представить хотя бы одно даже мелкое веб-приложение без каких-либо ссылок. Самый простой способ определить ссылку — это создать 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
. Первый хэлпер использует для генерации ссылок названия действий и контроллеров, второй — названия маршрутов.