ASP.NET MVC Url.Action删除控制器和动作名称

时间:2017-07-18 13:55:05

标签: asp.net-mvc

您好我的项目中有管理区域。 AreaRegistration是默认的

public class AdminAreaRegistration : AreaRegistration 
{
    public override string AreaName => "Admin";

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

当我使用Url.Action("Index", "Dashboard")时,它会返回/admin,但我希望获得admin/{controller}之类的路径,因此它必须是/admin/dashboard。但是,当用户导航到/admin时,需要重定向到/admin/dashboard

所以我需要那个

1)Url.Action("Index", "Dashboard")将返回/admin/dashboard

2)用户导航到/admin会将他重定向到/admin/dashboard

有没有办法用mvc路由做到这一点?

1 个答案:

答案 0 :(得分:0)

在SO解决方案发布之后一如既往地发现自己

解决方案是使用Url.RouteUrl("Admin_Dashboard")和路由

context.MapRoute(
            "Admin_Dashboard",
            "admin/dashboard",
            new { action = "Index", controller = "Dashboard", id = UrlParameter.Optional }
        );