[英]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.