是否可以在 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();

是否可以在 Global.asax 中使用友好的 URL 功能

我不熟悉你提到的友好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();

无需在此配置中拆分查询字符串值。