Asp.net mvc ActionLink在尝试隐藏控制器时向链接添加控制器参数

Asp.net mvc ActionLink在尝试隐藏控制器时向链接添加控制器参数,asp.net-mvc,Asp.net Mvc,我想根据组的值制作控制器,因此我有以下路线: routes.MapRoute( name: "Default", url: "{group}/{action}", defaults: new { group = "Default", action = "Index" } ).RouteHandler = new MyRouteHandler(); 使用以下routehandler和httphandler: public class MyRouteHandler :

我想根据组的值制作控制器,因此我有以下路线:

routes.MapRoute(
     name: "Default",
     url: "{group}/{action}",
     defaults: new { group = "Default", action = "Index" }
).RouteHandler = new MyRouteHandler();
使用以下routehandler和httphandler:

public class MyRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        return new MyHttpHandler(requestContext);
    }
}

public class MyHttpHandler : IHttpHandler
{
    RequestContext _requestContext;

    public MyHttpHandler(RequestContext requestContext)
    {
        _requestContext = requestContext;
    }

    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        var groupName = _requestContext.RouteData.GetRequiredString("group");

        // Select the controller, e.g. Home:

        _requestContext.RouteData.Values.Add("controller", "Home");

        IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory();
        IController controller = factory.CreateController(_requestContext, "Home");
        if (controller != null)
        {
            controller.Execute(_requestContext);
        }
    }
}
这一切正常,但如果在页面上放置@Html.ActionLink(“Index”,“Index”),则会产生以下链接:

[a href=“/?controller=Home”]索引[/a]

有人能告诉我为什么在使用Html.ActionLink时添加控制器参数吗?(我不想将controller=Home参数添加到链接中。)

多谢各位

可能的解决方案

routes.MapRoute(
   name: "Default",
   url: "{group}/{action}/{controller}",
   defaults: new { group = "Default", action = "Index", controller = "Home" }
);

@Html.ActionLink("Index", "Index", new {group = "Group"});

这不是解决我问题的办法。控制器仍在url中。@Tim是否删除自定义Routehandler。上面的示例提供了以下链接:http://.../Group,如果当前控制器为“HomeController”