0

我正在学习 ASP.NET 4.5,偶然发现了这篇关于友好 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();
4

2 回答 2

0

我一直使用友好的网址,这是我在 Web 表单项目中所做的:

全球阿萨克斯

 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();

您不需要在此配置中拆分查询字符串值。

于 2013-10-10T20:50:15.547 回答
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('/')

微软在这里有一个例子

于 2013-10-10T20:27:05.977 回答