簡體   English   中英

C#,ASP.NET MVC / MVC2:為特定控制器添加通配符路由-幫助構建路由

[英]C#, ASP.NET MVC / MVC2: Add wildcard route for specific controller - help building route

可以說我有一個名為Store的控制器。 有一個索引方法:

public ActionResult Index(string val, long? id, int? id2)
{
  return View();
}

我想獲取類似的東西:

/my-store/some-text 
/my-store/some-text/
/my-store/some-text/123456789012335
/my-store/some-other-text/4562343462345
/my-store/some-other-bla-text/4562343462345/1
/my-store/some-other-bla-bla-text/45345723554/2

因此,要求是:
+控制器鏈接文本為“我的商店”,並且必須路由到商店控制器
+如果只有文本和ID,則將ID2保留為空
+如果只有一些文本且沒有id,則只需將id和id2保留為空

以下正確嗎?

routes.MapRoute(
    "Store", // Route name
    "my-store/{val}/{id}/{id2}", // URL with parameters
    new { controller = "Store", action = "Index", id = UrlParameter.Optional, id2 = UrlParameter.Optional }
);

提前謝謝你的幫助!

是的,看起來不錯,只不過您需要在路由中為{val}定義一個默認值:

routes.MapRoute(
"Store", // Route name
"my-store/{val}/{id}/{id2}", // URL with parameters
new { controller = "Store", action = "Index", val = "", id = UrlParameter.Optional, id2 = UrlParameter.Optional }

只要記住要清理val中的字符串,就好像您有一些時髦的字符時,您的鏈接將無法工作。 就像說val等於“ thisis / val”一樣 ,那么您的鏈接將是:

/ my-store / thisis / val / 1212/12

不會打到您的路線,最有可能返回404

暫無
暫無

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

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