我有一个CMS系统,我使用路由来获取页面名称。我需要在第一个项目和最后一个项目(页面名称)之间具有无限值(子目录,产品名称,不同的本地化)。
例如:
/产品/计算机/ ComputerType1 /
和
/ PRODUCTOS / Ordenadores / ComputerType1 /
其中ComputerType1是页面名称。
routes.Add(new Route("{*route}/{pageName}", routeHandler));
我找不到使路由的中间部分({* route})成为通配符的方法,以便可以在页面名称前面放置无限数量的子目录。目前我只能通过默认的通配符路由来解决这个问题,例如:
routes.Add(new Route("{*route}", routeHandler));
抓住一切。但是,即使您在路由代码中将上面的忽略指定为忽略,通配符似乎也允许使用gif网址:
routes.Ignore("{resource}.axd/{*pathInfo}");
routes.Ignore("{resource}.asmx/{*pathInfo}");
routes.Ignore("{resource}.ashx/{*pathInfo}");
routes.Ignore("{resource}.gif/{*pathInfo}");
routes.Ignore("{resource}.png/{*pathInfo}");
routes.Ignore("{resource}.jpg/{*pathInfo}");
routes.Ignore("{resource}.ico/{*pathInfo}");
routes.Ignore("{resource}.pdf/{*pathInfo}");
routes.Ignore("{resource}.css/{*pathInfo}");
routes.Ignore("{resource}.js/{*pathInfo}");
有更好的方法吗?这应该通过自定义路由处理程序处理吗?
答案 0 :(得分:1)
是的,你应该为像这样的案件创建一个路由处理程序
简单地创建class
并从RouteBase
派生出来
覆盖GetRouteData
方法
在此方法中,您可以访问当前httpcontext
,从而可以访问请求的URL
所以你可以相应地路线
有关自定义路线的更多信息,请访问此链接
http://www.codeproject.com/Articles/299531/Custom-routes-for-MVC-Application