繁体   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