我想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