路由 asp.net Web 窗体默认页面

本文关键字:默认 窗体 Web asp net 路由 | 更新日期: 2023-09-27 18:35:39

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

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

我只有 2 页关于该项目

1)默认.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页面是可以的.aspx但随后路由也开始将所有JavaScript,CSS等发送到CMS。

知道如何将所有URL路由到CMS.aspx而无需路由脚本和CSS

路由 asp.net Web 窗体默认页面

已编辑:此示例将帮助您仅匹配无扩展名的 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
)