1

我试图在我的 Global.asax 文件中执行以下操作:

目前我必须像这样定义我的路线:

routes.MapPageRoute(
    "ViewPage", 
    "pages/{slug}",
    "~/viewpage.aspx",
    false
);

注意单词 pages 之前{slug}

现在,如果我这样定义它:

routes.MapPageRoute (
    "ViewPage", 
    "{slug}",
    "~/viewpage.aspx",
    false
);

这没用。

我的 CSS 和 JS 文件无法加载,我得到 404。

但是,如果我这样做:

routes.MapPageRoute (
    "ContactPage", 
    "contact",
    "~/contact.aspx",
    false
);

它工作正常?

基本上我希望我的网址看起来像这样:

example.com/contact或者example.com/about-us它都是基于 {slug} 从数据库动态提供的。

任何人都可以帮忙吗?

4

3 回答 3

3

使用:

RouteTable.Routes.MapPageRoute("slug", 
                "{slug}",
                "~/page.aspx", false);

对我来说很好。您需要确保您的路线顺序正确;特定于一般,但也有一个忽略资源等。否则它们也会被路由到那里。

希望有帮助

编辑

忽略以下路线:

RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");
于 2011-01-27T10:19:02.153 回答
1

如何忽略asp.net表单中的路由url路由

也许是这样的,虽然我目前无法测试。据我了解,它应该告诉路由处理程序忽略这些目录中的任何内容。

routes.Add(new Route("images/", new StopRoutingHandler()));
routes.Add(new Route("js/", new StopRoutingHandler()));
routes.Add(new Route("css/", new StopRoutingHandler()));
于 2011-01-27T10:18:54.340 回答
1

多谢你们!!

我不得不重新安排我的路线。

我使用 HttpHandler 来组合和压缩我的 js 和 css 文件。这是最后添加的,如下所示:

const string combine = "~/code/httphandlers/httpcombiner.ashx";
RegisterRoutes(RouteTable.Routes);
RouteTable.Routes.Add(new Route("combine", new HttpHandlerRoute(combine)));

我将这些切换为:

const string combine = "~/code/httphandlers/httpcombiner.ashx";
RouteTable.Routes.Add(new Route("combine", new HttpHandlerRoute(combine)));
RegisterRoutes(RouteTable.Routes);

我为 webresource.axd 添加了 StopRoutingHandler,现在一切正常!

于 2011-01-27T10:43:49.913 回答