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