【问题标题】:ActionLink adds controller argument to link when trying to hide the controllerActionLink 在尝试隐藏控制器时将控制器参数添加到链接
【发布时间】:2013-03-14 19:54:48
【问题描述】:

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

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 参数添加到链接中。)

非常感谢!

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    可能的解决方案

    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 您是否删除了您的自定义路由处理程序。上面的例子给了我下面的链接:http://.../Group, if current controller is "HomeController"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多