我想somewere我看到了有關這方面的例子,但無法找到它了:全局覆蓋Page_PreInit()而不創建子類化頁?
是否有一種方式來覆蓋全球基礎上Page_Init()事件,而無需創建從頁面繼承了新MyCustomPage類?
我希望有一些方法可以在沒有子類化頁面的情況下對頁面進行全局覆蓋(不需要從子類繼承我的頁面)。我正在考慮關於Global.asax的一些內容,但對於Page來說。提前爲你的時間
' Change Culture's ShortDate to "dd/mmm/yyyy" for es-MX. If CultureInfo.CurrentCulture.Name = "es-MX" Then Dim info As CultureInfo = CultureInfo.CurrentCulture.Clone info.DateTimeFormat.ShortDatePattern = "dd/MMM/yyyy" System.Threading.Thread.CurrentThread.CurrentCulture = info info = Nothing End If
感謝:
這是我想要的代碼將在PreInit在每一頁上運行。
編輯:
截至今天,已經有2個非常好的解決方案(針對我的情況)以下提供。我已經選擇了其中一個作爲接受的答案,即使我目前正在使用其他解決方案。這是因爲我將使用的是@Simon對此問題的評論。
解決的辦法是把我的代碼在Global.asax中爲:
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs) ' Configure ShortDatePattern as "dd/MMM/yyyy" for es-MX to avoid month-day confusions when both are numeric. If CultureInfo.CurrentCulture.Name = "es-MX" Then Dim oCultureInfo As CultureInfo = CultureInfo.CurrentCulture.Clone oCultureInfo.DateTimeFormat.ShortDatePattern = "dd/MMM/yyyy" System.Threading.Thread.CurrentThread.CurrentCulture = oCultureInfo oCultureInfo = Nothing End If End Sub
在我的問題,我問如何重寫Page_Init()無子類頁。這似乎造成了一些混亂。原因是我正在創建一個項目模板,其中包含許多通常需要的功能(如用戶管理,權限管理等)。
對於使用此模板創建的項目,我想默認使用es-MX Culture並修改ShortDatePattern以在縮寫的月份名稱中顯示月份。由於這是一個項目模板,我希望我的程序員免於需要實現繼承自定義類的頁面。對我來說,在這個(項目模板)級別對頁面進行子分類時,感覺「很奇怪」。
另一種解決方案。我標記爲接受的是@Ishtar提供的。我已經實現了它,它完美的工作並符合我的需求。他提供的示例代碼中唯一缺少的是需要調用MyBase.OnInit(e)。
我想感謝所有提供解決方案和意見的人以及對@Ishtar非常特別的感謝,他們提供了初步的答案並留下了這個主題,因爲我拒絕了我的需求。然後他提供了第二個被證明是正確的答案(被標記爲接受的答案)。
在PreInit中執行的代碼怎麼樣?您需要在Global.asax的BeginRequest中更改文化以捕捉完整的頁面生命週期。 – sisve 2009-11-09 06:18:46
@Simon:是的,代碼在PreInit中工作(我會稍後更新我的問題)。但是我想避免的是需要對頁面進行子類化。 – vmarquez 2009-11-09 20:41:52