簡體   English   中英

ASP.NET MVC路由匹配。

[英]ASP.NET MVC route matching.

在ASP.NET MVC路由(不是Web API)中,如何匹配路由開頭而不是后面的任何整數。

例如,我看到的示例中提到了如何匹配/ website / Product / {id}的示例-這里創建了一個帶id參數的ProductController,並在id參數上指定了約束。

但是,我正在嘗試匹配看起來像這樣的路由-/ website / {top-level-id} / Product / {id}

頂級ID可以是任何整數。 關於如何進行此操作有任何想法嗎?

這樣的事情應該起作用:

 routes.MapRoute(
     name: "WithTopId",
     url: "{topId}/{controller}/{action}/{id}",
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
     constraints: new { topId = "^[0-9]*$", id = "^[0-9]*$" }
 );

然后只需將此路由置於默認路由之上即可。

您可以添加這樣的路線

routes.MapRoute("TopLevelProduct", "{topLevelId}/Product/{id}", 
           new { controller = "Product", action = "Index" });

您可以用任何您想執行的操作來替換Index,以及您的id是否具有可選的默認值(我將您的頂級標識符重命名,因為在C#中使用這些連字符很尷尬

routes.MapRoute("TopLevelProduct", "{topLevelId}/Product/{id}", 
       new { controller = "Product", action = "Index", topLevelId = 0, id = 0 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM