Razor url映射中是否有可使用的最大参数数?

Razor url映射中是否有可使用的最大参数数?,razor,asp.net-mvc-4,url-routing,Razor,Asp.net Mvc 4,Url Routing,我正在做一个目录类型的程序,需要在浏览和搜索时跟踪面包屑,同时创建SEO友好的URL。我有可以深入到5级的分类,这很少见,但可能发生。我想我遇到了一个限制,找不到任何可以解决多少参数可用于映射的内容 我的地图如下所示: routes.MapRout( "CategoryPath", "products/{cat1}/{cat2}/{cat3}/{cat4}/{cat5}", new { controller = "CategoryPath", a

我正在做一个目录类型的程序,需要在浏览和搜索时跟踪面包屑,同时创建SEO友好的URL。我有可以深入到5级的分类,这很少见,但可能发生。我想我遇到了一个限制,找不到任何可以解决多少参数可用于映射的内容

我的地图如下所示:

routes.MapRout(
     "CategoryPath",
     "products/{cat1}/{cat2}/{cat3}/{cat4}/{cat5}",
     new { controller = "CategoryPath",
          action = "Index", 
          cat1 = UrlParameter.Optional,
          cat2 = UrlParameter.Optional,
          cat3 = UrlParameter.Optional,
          cat4 = UrlParameter.Optional,
          cat5 = UrlParameter.Optional
     });
@Url.Action("Index", "CategoryPath", new { cat1 = row.Title, })
@Url.Action("Index", "CategoryPath", new { cat1 = row.Title, cat2 = subrow.Title })
我的链接是这样创建的:

routes.MapRout(
     "CategoryPath",
     "products/{cat1}/{cat2}/{cat3}/{cat4}/{cat5}",
     new { controller = "CategoryPath",
          action = "Index", 
          cat1 = UrlParameter.Optional,
          cat2 = UrlParameter.Optional,
          cat3 = UrlParameter.Optional,
          cat4 = UrlParameter.Optional,
          cat5 = UrlParameter.Optional
     });
@Url.Action("Index", "CategoryPath", new { cat1 = row.Title, })
@Url.Action("Index", "CategoryPath", new { cat1 = row.Title, cat2 = subrow.Title })
因此,在渲染链接时(最多使用cat4),它将正确渲染为

 ~/products/pruductCategory1 
~/products/productCategory1/productCategory2

但是,一旦我添加cat5,它们就会以这种方式渲染

~/CategoryPath?cat1=productCategory1 


如果有人知道这一限制或可能的解决方法,我将不胜感激。

我认为url有一个最大字符数。但这里的问题是有5个可选参数。每个路由只能有一个。只有路由的最后一个参数是可选的。你的路线声明没有意义<如果要使用此类url模式,则代码>cat1、
cat2
cat3
cat4
不能是可选的。否则,路由引擎将永远无法消除您的URL的歧义。如果只有一个参数是可选的,我是否需要为以前的参数放置其他的ad cat1=“”?这似乎不会影响它如果我这样做了,我仍然得到了错误的格式不,你不需要把它们作为空的。你需要给他们一个价值。像这样的
cat1=“cat1的一些值”,cat2=“cat2的一些值”
等等……好吧,如果我理解你的话,我需要采取不同的方法,因为目录的级别是由最终用户动态创建的,可能会改变。因此,我可能需要创建一个映射,将父级别编译为一个参数,将当前级别编译为一个单独的参数。如果用户愿意的话,这将最终允许更深的层次