是否可以在 Global.asax 中使用友好的 URL 功能
本文关键字:功能 URL Global asax 是否 | 更新日期: 2023-09-27 18:34:52
我正在学习 4.5 ASP.NET 并偶然发现了这篇关于友好 URL 的文章。现在我正在使用 ASP.NET 4.5,事实证明,当我创建新的 ASP.NET 项目时,该功能已经启用并安装。
假设我有以下网址:
http://somesite.com/Admin/Users/1/2/3
这应映射到以下内容:
http://somesite.com/Admin/Users.aspx?a=1&b=2&c=3
这在Users.aspx.cs
内部工作正常,但我也可以在Global.asax
中使用它吗?我已经尝试过了,以下方法返回空字符串:
string a = Request.GetFriendlyUrlFileExtension();
string b = Request.GetFriendlyUrlFileVirtualPath();
IList<string> c = Request.GetFriendlyUrlSegments();
我不熟悉你提到的友好URL包,但如果你想自己尝试一下,这里是你如何编写一些自定义路由:
在你的全球.asax
using System.Web.Routing;
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("Users", "Users/{*queryvalues}", "~/Users.aspx");
}
然后在您的用户中.aspx.cs而不是从
Request.QueryString["somekey"]
你会从中得到你的价值观
//This makes an array of string values
RouteData.Values["queryvalues"].ToString().Split('/')
微软这里有一个例子
我一直使用友好的网址,这是我在我的 Web 表单项目中所做的:
全球ASAX
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("About", "About", "~/About.aspx", true);
routes.MapPageRoute("Add User", "Add User", "~/Add.aspx", true);
routes.MapPageRoute("Login", "Login", "~/Login.aspx", true);
routes.MapPageRoute("Map", "Map", "~/Map.aspx", true);
routes.MapPageRoute("Register", "Register", "~/Register.aspx", true);
routes.MapPageRoute(
"ViewList",
"ViewList/{c}/{s}",
"~/ViewList.aspx",
true
);
routes.MapPageRoute(
"ViewUser",
"ViewUser/{id}",
"~/ViewUser.aspx",
true
);
routes.MapPageRoute(
"MyAccount",
"MyAccount/{id}",
"~/MyAccount.aspx",
true
);
}
页面接收查询字符串
string city = RouteData.Values["c"].ToString();
string state = RouteData.Values["s"].ToString();
无需在此配置中拆分查询字符串值。