Почему @ Html.ActionLink отключает контроллер и часть действия ссылки? - PullRequest
0 голосов
/ 21 июня 2011

Я создаю ссылку внутри основного файла _Layout.cshtml внутри приложения MVC3.

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

Когда страница отображается, это результирующий HTML

<a href="/Security">Security</a>

и если я нажму на эту ссылку, я получу пустую страницу.

У меня установлено routedebugger и вот результаты:

Route Debugger output

У меня есть маршрут по умолчанию внутри Global.ascx.cs следующим образом:

 routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "Eis.Mvc.Web" }// Parameter defaults
        );

и маршрут зоны безопасности:

context.MapRoute(
            "Security_default",
            "Security/{controller}/{action}/{id}",
            new { area = "Security", controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "Eis.Mvc.Web.Areas.Security.Controllers" }
        );       

Если я непосредственно наберу следующий URL, http://localhost:1410/Security/home,, будет отображена правильная страница.

Как я могу получить ссылку @ Html.Action для включения URL-адреса контроллера в часть? У меня есть контроллер Home с действием Index в корневой части приложения, и мне пришлось включить фильтры пространства имен в регистрации маршрутов. Спасибо, Keith

1 Ответ

0 голосов
/ 22 июня 2011

Измените отображение маршрута зоны безопасности на следующее:

context.MapRoute(
        "Security_default",
        "Security/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional },
        new string[] { "Eis.Mvc.Web.Areas.Security.Controllers" }
    );    

Обратите внимание, что область и части контроллера по умолчанию были удалены.

Теперь @Html.ActionLink("Security", "Index", "Home", new { area = "Security" }, new { }) отображает <a href="/Security/Home">Security</a>

Keith

...