可以在Global.asax中使用友好URL功能吗?

时间:2013-10-10 17:47:53

标签: c# asp.net friendly-url

我正在学习ASP.NET 4.5并偶然发现有关友情网址的this帖子。现在我使用的是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();

2 个答案:

答案 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)

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

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

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