Может ли Html.ActionLink в области MVC отображать ссылки для области по умолчанию / корневой области без указания ее с новой {area = ""} - PullRequest
0 голосов
/ 17 мая 2018

Я столкнулся с ситуацией, когда у меня есть много вызовов Html.ActionLink в области по умолчанию / root, которые не указывают область, как в примере ниже.

@Html.ActionLink("Home", "Index", "Home")

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

@Html.ActionLink("Home", "Index", "Home", new { area = "" })

Очевидное решение состоит в том, чтобы просто добавить спецификацию области ко всем вызовам Html.ActionLink, но, к сожалению, их очень много, и для их изменения потребуется немало усилий.

Я нахожусь в ситуации, когда я должен использовать эти ссылки из области по умолчанию / root, и мне было интересно, есть ли способ, которым я могу установить что-то, где вызов Html.ActionLink будет сначала искать текущую область, но если нет соответствияКонтроллер / Вид найден, что будет искать область по умолчанию / корневую область?Я хочу заявить, что у меня есть несколько областей MVC в проекте, поэтому решение должно быть таким, чтобы оно работало более чем с двумя областями, включая default / root.

1 Ответ

0 голосов
/ 17 мая 2018
   1. Create a new ASP.NET MVC 3 application using the default Visual Studio template
   2. Add an area called Admin using Visual Studio designer by right clicking on the project
   3. Add new Controller in ~/Areas/Admin/Controllers/MeetsController:

        public class MeetsController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
    Add a corresponding view ~/Areas/Admin/Views/Meets/Index.cshtml

    In the layout (~/Views/Shared/_Layout.cshtml) add links:

    @Html.ActionLink("Admin", "Index", "Meets", new { area = "Admin" }, null)
    @Html.ActionLink("Admin", "Index", "Meets", new { area = "" }, null)
    Run the application.
    Rendered HTML for the anchors:

    <a href="/Admin/Meets">Admin</a>
    <a href="/Meets">Admin</a>
    As expected the first link works whereas the second doesn't.

Я надеюсь, у вас есть идея этого ...

...