0

我正在使用路由将所有 url 重定向到同一页面。

我不想指定到每个页面的路由,因为它正在由内容管理系统更改。

我的项目只有 2 页

1)default.aspx

2)cms.aspx

直到今天我还在使用

 routes.MapPageRoute("defaultRoute3", "{*value}", "~/cms.aspx");

在 cms.aspx 页面中,我使用此代码来了解要加载哪个视图

  string objectCurrentNameUrl = Page.RouteData.Values["value"] as string;

    string[] arrOfParmeters = objectCurrentNameUrl.Split('/');

使用一个参数,一切都很完美,例如:mywebsite.com/zone

被重定向到 cms.aspx 然后我进行了拆分。

尝试在 url 上使用 antoher 参数时问题开始

mywebsite.com/zone/114334

重定向到 cms.aspx 页面没问题,但随后路由也开始将所有 javascript、css 等发送到 cms.aspx。

知道如何在没有路由脚本和 css 的情况下将所有 url 路由到 cms.aspx

4

1 回答 1

0

已编辑:此示例将帮助您仅匹配无扩展名的 URL,从而确保您的静态文件安全并正确返回

public Route MapPageRoute(
    "defaultRoute3",
    "{folder}/{id}",
    "~/cms.aspx",
    false,
    null,
    new RouteValueDictionary { { "id", "(.*)/([^\./]+)$" }}
)

这是您可以在重载之下使用的完全重载。使用约束参数排除静态文件

public Route MapPageRoute(
    string routeName,
    string routeUrl,
    string physicalFile,
    bool checkPhysicalUrlAccess,
    RouteValueDictionary defaults,
    RouteValueDictionary constraints,
    RouteValueDictionary dataTokens
)
于 2013-10-16T09:51:28.017 回答