簡體   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