如何使用路由ASP.NET 4的WebForms与查询字符串?路由、字符串、如何使用、ASP

2023-09-08 09:26:44 作者:非主流个性昵称:只谈心不贪心

首先,这不是MVC,WebForms的只有..

First, this is not MVC, WebForms only..

我使用的路由,以保持我的网站为我们的客户后向兼容,而让我的项目组织。

I'm using routing to keep my site backwards compatible for our clients, while make my project organized.

我也想将我们的加密查询字符串到一个更友好的URL。 这是如何工作是我们的客户有书签巨大的加密网址$ P $由各地改变一个ID猜测我们的其他客户pvent他们。

I'm also thinking of moving our encrypted query string to a more friendly url. How this works is our clients have to bookmark a huge encrypted url to prevent them from guessing our other clients by changing an id around.

但不是在这个巨大的网址,想添加的路由像LoginClientName.aspx为每一个客户,并有加密的查询字符串硬codeD或者在数据库中。

But instead of having this huge url, wanted to add a route like LoginClientName.aspx for each client and have the encrypted query string hard coded or maybe in database.

但看不到的方式来查询添加到的MapPageRoute ..

But don't see a way to add a query to the MapPageRoute..

在想这样的事情(知道它不工作)

Was thinking of something like this (know it doesnt work)


routes.MapPageRoute("MapClient1", "LoginClient1.aspx", "Login.aspx?secure=mylongquerystring");
routes.MapPageRoute("MapClient2", "LoginClient2.aspx", "Login.aspx?secure=differentmylongquerystring");

现在,这将引发异常,因为它不允许?在网址..任何想法如何做到这一点?或者是不可能的?

Now this throws exception since it doesn't allow a ? in url.. any ideas how to accomplish this? or is it impossible?

推荐答案

一起来看看这个: http://msdn.microsoft.com/en-us/library/cc668177.aspx 基本上就是它说的是:

take a look at this: http://msdn.microsoft.com/en-us/library/cc668177.aspx basically what its saying is:

void Application_Start(object sender, EventArgs e) 
{
    RegisterRoutes(RouteTable.Routes);
}

然后:

and then:

void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("",
        "SalesReport/{locale}/{year}/{*queryvalues}", "~/sales.aspx");

    routes.MapPageRoute("SalesSummaryRoute",
        "SalesReportSummary/{locale}", "~/sales.aspx");

    routes.MapPageRoute("SalesDetailRoute",
        "SalesReportDetail/{locale}/{year}/{*queryvalues}", "~/sales.aspx",
        false);

...

    routes.MapPageRoute("ExpenseDetailRoute",
        "ExpenseReportDetail/{locale}/{year}/{*queryvalues}", "~/expenses.aspx",
        false,
        new RouteValueDictionary 
            { { "locale", "US" }, { "year", DateTime.Now.Year.ToString() } },
        new RouteValueDictionary 
            { { "locale", "[a-z]{2}" }, { "year", @"\d{4}" } },
        new RouteValueDictionary 
            { { "account", "1234" }, { "subaccount", "5678" } });
}