区域中的路线映射

时间:2014-09-28 14:22:47

标签: asp.net-mvc

如何创建到以下网址的路线映射:

http://localhost/SiteName/AdminCP/Topics/EditTopic/28

AdminCP是一个区域 - 我可以访问主题控制器并向用户显示主题列表,然后用户单击链接以编辑主题 带他们到上面的网址。 EditTopic是AdminCP中的一个控制器,它返回一个Index操作。

这是我的AdminCP注册码无效。

public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "AdminCP_default",
            "AdminCP/{controller}/{action}/{id}",
            new { controller= "Home", action = "Index", id = UrlParameter.Optional }
        );

        context.MapRoute(
           "AdminCP_Topics",
           "AdminCP/Topics/{controller}/{action}/{id}",
           new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );

    }

我能够重现此网址:

http://localhost/SiteName/AdminCP/EditTopic/Index/26

使用此代码段

@Html.ActionLink("Edit Options", "", "EditTopic", new { id = item.CategoryId }, new { @class = "popup-link" }) 

......但这不是我想要的。

1 个答案:

答案 0 :(得分:0)

尝试此操作(在AdminCP默认路由之前添加)

context.MapRoute(
            "AdminCP_Topics",
            url: "AdminCP/Topics/{controller}/{id}",
            defaults: new { action = "Index", id = UrlParameter.Optional }
        );

并且

@Html.ActionLink("Edit Options","Index","EditTopic", new {id = 1, area = "AdminCP" },null)