對這個問題很新穎,並在槍下拿出一個解決方案。問題是我如何加載同一個ASPX頁面的幾個版本之一,對於任何給定的頁面。例如。未知的請求catalog.aspx的毫無戒心的用戶,我實際上服務catalog_1.aspx,catalog_2.aspx或catalog_3.aspx等之一。ASP.NET - 如何透明地更改請求的頁面名稱?
確實奇怪的要求。這是由於一個遺留的十年陳舊的產品在ASPX上有內聯樣式。我試圖用正則表達式替換它們以獲得適合各種屏幕尺寸的版本,而不是重新編寫數百個ASPX。然後,我會在用戶登錄後測量窗口大小並選擇最好的一個(並可能將大小存儲在cookie中)。
我認爲這將涉及一些像http處理程序一樣的較低級別的對象。關?
LJ
更新:我最終通過URL重寫其效果要好得多這樣做。在asp.net中最簡單的做法是顯示global.asax和Application_BeginRequest事件。調用context.RewritePath(newpath,False)將請求發送到與請求不同的頁面。
以我這樣做的方式,如果回發的收件人不是生成視圖狀態的頁面的確切版本,則目標頁面可能會從請求更改爲請求,並且顯然會擾亂回發。我試圖關閉視圖狀態驗證,但沒有幫助。因此,必須防止在用戶登錄後在版本之間翻轉。希望這可以幫助某人。
我想你會遇到問題,如果有這些頁面回發控件。表單上的操作將是'catalog_1.aspx',所以在發佈之後,我相信URL欄將顯示'catalog_1.aspx',而不是'catalog.aspx',除非您在響應中做了更多的調整。 –
你是對的,它會表現得那樣。他們沒有說明,所以我只是尋找最快的選擇。加載頁面後不知道這個問題。 –
供參考:不是OP,所以我不知道這是否會成爲他們的問題... –