簡體   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