繁体   English   中英

ASP.net MVC 4路由和可选参数意外结果

[英]ASP.net MVC 4 Routing and optional parameters unexpected result

这是我的路线,唯一需要的参数是控制器

        routes.MapRoute(
            "countryoptional/controller",
            "{country}/{controller}/{pagelabel}/{page}",
            new { action = "index", country = UrlParameter.Optional,  pagelabel = UrlParameter.Optional, page = UrlParameter.Optional },
            new
            {
                pays = @"$|^(france|belgium)$",
                controller = @"^(car|boat)$",
                pagelabel = @"^$|page",
                page = @"^$|\d{1,6}"
            }
        );

我期待以下URL可以使用:

/汽车/

/汽车/页/ 2

/法国/汽车

/法国/车/页/ 2

它有点工作:

Url.Action("index", "car", new { country= "france", pagelabel = "page", page = 2} )

将产生: / france / car / page / 2

如果我想要一个没有国家/地区的网址,则视图操作会响应但是像构造函数一样

Url.Action("index", "car", new { pagelabel = "page", page = 2} )

将生成此链接: // car / page / 2

我得到这个双斜杠“// car”所以它打破了当然的链接。

我怀疑它不喜欢{country} / {controller} / ... url定义中控制器可选的{country}参数的可能性我不想让我的路由配置变得复杂并且有另一个路由声明那里必须是一种方式,我做错了什么?

可选参数必须遵循任何所需参数。 据我所知,我无法解决这个问题。 其他地方(您的方法定义等)也适用相同的限制。

只需重复该路线,并拥有一个所需的国家和一个没有任何国家。 MVC将找出使用哪一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM