0

我正在 MVC3 应用程序内的主 _Layout.cshtml 文件中创建一个链接。

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

呈现页面时,这是生成的 Html

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

如果我点击这个链接,我会得到一个空白页。

我已经安装了routedebugger,结果如下:

路由调试器输出

我在 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 控制器,并且必须在路由注册中包含命名空间过滤器。

谢谢你,基思

4

1 回答 1

0

将安全区域的路由映射更改为以下内容:

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>

基思

于 2011-06-22T14:16:18.083 回答