1

我有一个 CMS 系统,我正在使用路由来获取页面名称。我需要在第一项和最后一项(页面名称)之间有无限的值(子目录、产品名称、不同的本地化)。

例如:

/产品/计算机/ComputerType1/

/Productos/Ordenadores/ComputerType1/

其中 ComputerType1 是页面名称。

routes.Add(new Route("{*route}/{pageName}", routeHandler));

我找不到将路由的中间部分 ({*route}) 设为通配符的方法,以便可以在页面名称前面放置无限数量的子目录。目前我只能通过默认的通配符路由来解决这个问题,例如:

routes.Add(new Route("{*route}", routeHandler));

抓住一切。但是,即使您在上面的路由代码中将其指定为忽略,通配符似乎也允许输入 gif url:

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}");

有没有更好的方法来做到这一点?这应该通过自定义路由处理程序来处理吗?

4

1 回答 1

1


是的,您应该为这些简单的创建一个路由处理程序创建一个class并从RouteBase
覆盖此GetRouteData方法
中的方法派生它,您可以访问当前httpcontext,因此您可以访问请求的,因此您可以相应URL
地路由。
有关自定义路线的更多信息,请访问此链接
http://www.codeproject.com/Articles/299531/Custom-routes-for-MVC-Application

于 2012-05-01T05:35:56.120 回答