Asp.net

如何使用帶有查詢字元串的路由 ASP.NET 4 WebForms?

  • October 31, 2012

首先,這不是 MVC,只有 WebForms..

我正在使用路由來保持我的網站向後兼容我們的客戶,同時使我的項目井井有條。

我也在考慮將我們的加密查詢字元串移動到更友好的 url。這是如何工作的,我們的客戶必須為一個巨大的加密網址添加書籤,以防止他們通過更改 id 來猜測我們的其他客戶。

但是不想擁有這個巨大的 url,而是想為每個客戶端添加一個類似 LoginClientName.aspx 的路由,並將加密的查詢字元串硬編碼或者可能在數據庫中。

但是看不到向 MapPageRoute 添加查詢的方法。

正在考慮這樣的事情(知道它不起作用)

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

現在這會引發異常,因為它不允許 ? 在 url.. 任何想法如何做到這一點?還是不可能?

看看這個: http:

//msdn.microsoft.com/en-us/library/cc668177.aspx

基本上它的意思是:

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

接著:

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" } });
}

引用自:https://stackoverflow.com/questions/4938028