繁体   English   中英

MVC路由可以处理的参数数量是否有限制?

[英]Is there a limit on the number of parameters an MVC route can handle?

我正在使用MVC区域编写MVC应用程序。 当前,我们在显示区域中使用以下路线:

public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapRoute(
        "Display_default",
        "Display/{controller}/{action}/{id}/{id2}/{id3}/{*id4}",
        new { action = "Index", id = UrlParameter.Optional , id2 = UrlParameter.Optional, id3 = UrlParameter.Optional }
    );
}

这可行。 但是,我们发现需要具有6个参数的控制器动作:

public ActionResult _MyMethod(string id, string id2, string id3, string id4, string id5, string id6)

我们发现可以将其添加到当前设置中,但是第四个id之后的url中的任何参数都只是串联到第四个id参数中。

我们尝试将路由扩展为接受所需的参数数量,如下所示:

public override void RegisterArea(AreaRegistrationContext context) 
{
    context.MapRoute(
        "Display_default",
        "Display/{controller}/{action}/{id}/{id2}/{id3}/{id4}/{id5}/{*id6}",
        new { action = "Index", id = UrlParameter.Optional , id2 = UrlParameter.Optional, id3 = UrlParameter.Optional }
    );
}

但是,使用此路由将不再加载页面。

关于MVC路由可以映射到的参数数量,它是否具有某种形式的CAP? 我们还发现,如果将映射参数的数量缩小到id,id2和id3,它将再次起作用,所有溢出都串联到id3中。

有人对此有任何信息吗?

ASP.NET MCV对参数数量没有限制。

就你而言

public override void RegisterArea(AreaRegistrationContext context) 
{
   context.MapRoute(
      "Display_default",
      "Display/{controller}/{action}/{id}/{id2}/{id3}/{id4}/{id5}/{*id6}",
       new { action = "Index", id = UrlParameter.Optional , id2 = UrlParameter.Optional, id3 = UrlParameter.Optional }
   );
}

变量id是可选的,但id4是必需的。 您必须在最后添加可选参数。

喜欢

 routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}/{id5}/{id6}/{id}/{id2}/{id3}/{*id4}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, id2 = UrlParameter.Optional, id3 = UrlParameter.Optional, id4 = UrlParameter.Optional, id5 = UrlParameter.Optional , id6 = UrlParameter.Optional }
);

或将所有参数设为可选

routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}/{id}/{id2}/{id3}/{id4}/{id5}/{*id6}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, id2 = UrlParameter.Optional, id3 = UrlParameter.Optional, id4 = UrlParameter.Optional, id5 = UrlParameter.Optional }
 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM