代码之家  ›  专栏  ›  技术社区  ›  hackp0int

奇怪的重定向行为

  •  0
  • hackp0int  · 技术社区  · 11 年前

    我想知道如何保存 UrlRedirect 在里面 ASP.NET MVC-4 :

    例如,我有这样的:

    /admin/category/add/81/142 
    

    但在我使用这个之后:

    return RedirectToAction("Add", "Category", new RouteValueDictionary
    {
       {"id", siteid.Value},
       {"cid", pid.HasValue ? pid.Value : cid.Value }
    });
    

    我明白了:

    /admin/category/add?id=81&cid=142
    

    但我想要原版 /admin/category/add/81/142

    这是我的路由配置:

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRouteLowercase(
                "Admin_LogOn",
                "Admin/{controller}/{action}/",
                defaults: new { controller = "Account", action = "LogOn" },
                constraints: null
            );
    
            context.MapRouteLowercase(
                "Admin_Category_List_Add",
                "Admin/{controller}/{action}/{id}/{cid}/{pid}",
                defaults:
                    new
                    {
                        controller = "Category",
                        action = "Create",
                        id = UrlParameter.Optional,
                        cid = UrlParameter.Optional,
                        pid = UrlParameter.Optional
                    },
                constraints: null
            );
    
    
            context.MapRouteLowercase(
              "Admin_TwoParameters",
              "Admin/{controller}/{action}/{id}/{cid}",
              defaults: new { controller = "Manager", action = "Index", id = UrlParameter.Optional, cid = UrlParameter.Optional },
              constraints: null
          );
    
    
            context.MapRouteLowercase(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                defaults: new { controller = "Manager", action = "Index", id = UrlParameter.Optional },
                constraints: null
            );
        }
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   von v.    11 年前
    But i want the original one /admin/category/add/81/142
    

    要保留该格式,可以执行以下操作:

    return Redirect(Url.Action("Add", "Category") + "/" + siteid.Value + "/" + (pid.HasValue ? pid.Value : cid.Value));
    

    或者,如果您更喜欢插入字符串(我更喜欢第一个):

    return Redirect(new[] { Url.Action("Add", "Category"), "/", siteid.Value, "/", (pid.HasValue ? pid.Value : cid.Value).ToString()});