我正在学习ASP.NET 4.5并偶然发现有关友情网址的this帖子。现在我使用的是ASP.NET 4.5,当我创建一个新的ASP.NET项目时,它已经启用并安装了该功能。
假设我有以下网址:
这应该映射到以下内容:
这在Users.aspx.cs
内部可以正常使用,但我也可以在Global.asax
中使用它吗?我试过了,以下方法返回空字符串:
string a = Request.GetFriendlyUrlFileExtension();
string b = Request.GetFriendlyUrlFileVirtualPath();
IList<string> c = Request.GetFriendlyUrlSegments();
答案 0 :(得分:0)
我不熟悉你所指的friendlyURL包,但是如果你想自己尝试一下,那么你可以如何编写一些自定义路线:
在你的global.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");
}
然后在您的Users.aspx.cs中,而不是从
获取值 Request.QueryString["somekey"]
你会从
获得你的价值 //This makes an array of string values
RouteData.Values["queryvalues"].ToString().Split('/')
microsoft有一个例子here
答案 1 :(得分:0)
我一直使用友好的网址,这是我在网络表单项目中所做的:
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();
您不需要在此配置中拆分查询字符串值。