.NET MVC中可以有多少个路由参数? 像localhost:port / controller / action / parameter1 / parameter2 / parameter3 /等等
我目前正在使用此功能进行路由
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{extra}/{extra2}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, extra = UrlParameter.Optional, extra2 = UrlParameter.Optional }
);
这很有效。 但是当我在这个例子中添加另一个类似“extra3”的路由时,整个页面就会中断,普通的表单帖子等等就会停止工作。
你可以拥有的数量是否有限制,我应该选择正常的查询字符串吗?
被修改
进一步解释。 我想这样做
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{extra}/{extra2}/{extra3}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, extra = UrlParameter.Optional, extra2 = UrlParameter.Optional, extra3 = UrlParameter.Optional }
);
但是当我添加更多的路线/参数时,它只是不起作用。 您可以拥有多少限制?
答案 0 :(得分:1)
HTML帮助程序,例如(Html.ActionLink, Html.Action, Html.BeginForm etc
)在路径中有更多可选参数时会给出错误的结果。通常我们在路径末尾保留一个可选参数作为可选参数。
如果你保持路由配置如下,它将起作用。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{extra}/{extra2}/{extra3}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, extra = UrlParameter.Optional, extra2 = UrlParameter.Optional, extra3 = UrlParameter.Optional }
);
routes.MapRoute(
name: "OneOptional",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
阅读以下帖子中的“根本原因”部分,了解多个可选参数的问题。
谢谢!