我有一个CMS系统,我正在使用路由来获取页面名称。我需要在第一个项目和最后一个项目(页面名称)之间有无限的值(子目录,产品名称,不同的本地化)。ASP.NET URL使用通配符路由
例如:
/产品/电脑/ ComputerType1/
而且
/PRODUCTOS/Ordenadores/ComputerType1/
哪里ComputerType1是页面的名称。
routes.Add(new Route("{*route}/{pageName}", routeHandler));
我不能找到一种方法,使中间部分({*}路线)的路线是通配符,以便可以在页面名称前面放子目录的数量不受限制。目前我只能通过使用默认通配符路线来解决此问题,例如:
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}");
是否有这样做的更好的办法?这应该通过一个自定义的路由处理程序来处理?
自定义路线工作。不过,我仍然遇到了一个通配符路由,它捕获位于“App_Themes/directoryname/images/image1.gif”中的gif文件。 Route.Ignore的路由忽略(“{resource} .gif/{* pathInfo}”);仅在图像位于根目录中时才起作用。我注意到的一件事是图像文件在主题中被引用,但文件不存在于主题中的其他图像文件确实存在并且不试图被路由的地方。我正在考虑添加一个基于“/ App_Themes/{文件夹} .....”的忽略路由。还有其他建议吗? – econner
好吧,它看起来像问题是主题中引用的gif图像,但acutal文件不存在,所以IIS不能忽略“文件”,并将其路由为一个catchall url。 – econner