【问题标题】:How many routing parameters can you have?你可以有多少个路由参数?
【发布时间】:2014-07-09 08:22:45
【问题描述】:

.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 }
);

但是当我添加更多的路由/参数时,它根本不起作用。 您可以拥有多少个?

【问题讨论】:

  • 整个分页符是什么意思?您收到任何错误消息吗?页面是否完全加载?
  • @musefan 我将 url.action 用于各种事情,但它们都停止工作,就好像它们再也不会被执行一样。这只发生在我添加额外的路由/参数时。随着时间的推移,我添加了新的路由/参数,所以这不是我第一次这样做,但它第一次导致问题可能是由于限制或类似的原因
  • 您是否尝试保留默认的并添加新名称?
  • @Saranga 我的意思是我添加了一个额外的 /extra3 到它,比如 controller/action/id/extra/extra2/extra3。到默认地图路线
  • 那么您的url.Actions 是什么样的?如果直接输入 URL,是否可以手动导航到页面?

标签: c# asp.net-mvc asp.net-mvc-routing


【解决方案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 }
    );

}

阅读以下帖子的“根本原因”部分,了解多个可选参数的问题。

http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx/

谢谢!

【讨论】:

    猜你喜欢
    • 2016-10-31
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2021-10-30
    • 1970-01-01
    • 2017-03-03
    相关资源
    最近更新 更多