【问题标题】:ASP.NET MVC 4 Custom RoutingASP.NET MVC 4 自定义路由
【发布时间】:2015-06-22 21:05:42
【问题描述】:

我有一个管理功能区。我希望我的网址看起来像这样:

admin/{controller}/{slug}.{id}/{action} (即 admin/user/getoutofmylab.1/edit) admin/{controller}/{action} (即admin/user,这只是用户控制器的索引页)

当我从应用程序的根目录浏览到用户控制器时,我得到了 admin/user。用户控制器的编辑操作的链接正确生成。但是,如果我从该控制器中的任何其他操作中链接到索引操作,则会生成如下 URL:admin/user/{slug}.{id},如果单击它,则会生成 404 not found 错误。

这是我的 AdminAreaRegisration:

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRouteLowercase(
            "Admin_Applications",
            "admin/{controller}/{slug}.{id}/{action}",
            new { controller = "Application", action = "Index", id = UrlParameter.Optional, slug = "" },
            new string[] { "Web.Portal.Areas.Admin.Controllers" }
            );

        context.MapRouteLowercase(
            "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "Web.Portal.Areas.Admin.Controllers" }
            );
    }

我怎样才能达到预期的效果?

谢谢

【问题讨论】:

  • 所以你想从一个控制器中的动作链接到单独控制器中的动作?
  • 这些都在同一个控制器中。只是当我在“编辑”操作中时,例如,_Layout 页面上的“索引”操作的链接会使用 slug 生成,而它应该只是 /admin/user。
  • 似乎使用 Html.RouteLink 并指定动作有效,而不是使用 Html.ActionLink:@Html.RouteLink("List Applications", "Admin_Default", new { action = "Index" })

标签: c# asp.net-mvc routes


【解决方案1】:

似乎使用 Html.RouteLink 并指定操作而不是使用 Html.ActionLink: @Html.RouteLink("列出应用程序", "Admin_Default", new { action = "Index" })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多