Asp.net
如何使用帶有查詢字元串的路由 ASP.NET 4 WebForms?
首先,這不是 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" } }); }