Подтвердить что ты не робот

Как пройти область в Url.Action?

Проблема в Html.ActionLink() заключается в том, что вы не можете добавить дополнительное содержимое html в тег, который он генерирует. Например, если вы хотите добавить значок, помимо текста, например:

<a href="/Admin/Users"><i class="fa fa-users"></i> Go to Users</a>

Используя Html.ActionLink(), вы можете генерировать только:

<a href="/Admin/Users">Go to Users</a>

Итак, чтобы разрешить это, вы можете использовать Url.Action() для генерации только URL-адреса внутри тега, например:

// Here, Url.Action could not generate the URL "/admin/users". So this doesn't work.
<a href="@Url.Action("", "Users", "Admin")"><i class="fa fa-usesr"></i> Go to Users</a>

// This works, as we know it but won't pass the Area needed.
<a href="@Url.Action("", "Users")"><i class="fa fa-users"></i> Go to Users</a>

Итак, как вы проходите область с помощью Url.Action()?

Спасибо вам заблаговременно!

4b9b3361

Ответ 1

Вы можете использовать этот Url.Action("actionName", "controllerName", new { Area = "areaName" });

Также не забудьте добавить пространство имен контроллера, чтобы избежать конфликта между именами контроллера области администрирования и именами контроллеров сайта.

Что-то вроде этого

 public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional },
                  new[] { "Site.Mvc.Areas.Admin.Controllers" }
            );
        }

Ответ 2

@Url.Action("{action}", "{controller}", new { Area = "areaname" });
@Html.ActionLink("LinkName", "{action}", "{controller}", new { area = "{areaname}" }, new { @class = "btn btn-cool" })

записать имя области как атрибут html с анонимным объектом. вы можете использовать actionlink html helper extension для достижения того же самого.