- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想我曾经看到过一个关于这个的例子,但再也找不到了:
有没有办法在全局基础上覆盖 Page_Init() 事件而不创建从 Page 继承的新 MyCustomPage 类?
我希望有某种方法可以在不继承 Page 的情况下对 Page 进行全局覆盖(无需从子类继承我的页面)。我正在考虑有关 Global.asax 行的事情,但对于佩奇。
这是我想在每个页面的 PreInit 中运行的代码:
' 将 es-MX 的 Culture 的 ShortDate 更改为“dd/mmm/yyyy”。
如果 CultureInfo.CurrentCulture.Name = "es-MX"那么
Dim info As CultureInfo = CultureInfo.CurrentCulture.Clone
info.DateTimeFormat.ShortDatePattern = "dd/MMM/yyyy"
System.Threading.Thread.CurrentThread.CurrentCulture = 信息
信息 = 没有
万一
在此先感谢您的时间。
编辑:
截至今天,下面提供了 2 个非常好的解决方案(就我而言)。我选择了其中一个作为接受的答案,即使我目前将使用其他解决方案。这是因为我将使用的那个是@Simon 对这个问题的评论。
解决方案是将我的代码放在 Global.asax 中:
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
' 将 ShortDatePattern 配置为 es-MX 的“dd/MMM/yyyy”,以避免在两者都是数字时出现月日混淆。
如果 CultureInfo.CurrentCulture.Name = "es-MX"那么
Dim oCultureInfo As CultureInfo = CultureInfo.CurrentCulture.Clone
oCultureInfo.DateTimeFormat.ShortDatePattern = "dd/MMM/yyyy"
System.Threading.Thread.CurrentThread.CurrentCulture = oCultureInfo
oCultureInfo = 无
万一
结束子
在我的问题中,我询问了如何在不对 Page 进行子类化的情况下覆盖 Page_Init()。这似乎引起了一些困惑。原因是我正在创建一个项目模板,其中包含许多通常需要的功能(如用户管理、权限管理等)。
对于使用此模板创建的项目,我想默认为 es-MX Culture 并修改 ShortDatePattern 以在缩写的月份名称中显示月份。由于这是一个项目模板,我希望我的程序员无需实现从自定义类继承的页面。在这个(项目模板)级别为页面强加子类对我来说只是感觉“奇怪”。
另一种解决方案。我标记为接受的那个是由@Ishtar 提供的。我已经实现了它,它运行良好并且符合我的需求。他提供的示例代码中唯一缺少的是需要调用 MyBase.OnInit(e)。
我要感谢所有提供解决方案和评论的人,并特别感谢@Ishtar,他提供了初步答案并坚持了这个主题,因为我因需要拒绝了它。然后他提供了第二个证明正确的答案(标记为已接受的答案)。
最佳答案
另一种方法是使用页面适配器
public class TestPageAdapter : System.Web.UI.Adapters.PageAdapter
{
protected override void OnInit(EventArgs e)
{
if (Thread.CurrentThread.CurrentCulture.Name == "es-MX")
{
CultureInfo info = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
info.DateTimeFormat.ShortDatePattern = "dd/MMM/yyyy";
System.Threading.Thread.CurrentThread.CurrentCulture = info;
info = null;
}
}
}
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="TestPageAdapter" />
</controlAdapters>
</browser>
</browsers>
关于asp.net - 全局覆盖 Page_PreInit() 而不子类化 Page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1699272/
我正在运行一个 ASP.NET 4.0 项目。 .aspx 页面在 header 中设置了 AutoEventWireup="true"。 虽然 OnPreInit 被调用了,但是 Page_PreI
我想动态设置母版页,但目前我有一个带有 Page_PreInit 的基页,用于初始化/执行成员页所需的各种任务。 现在我知道您可以通过在成员(member)页面中放置 (new protected v
我正致力于将动态控件添加到 asp 页面。在示例代码中,控制计数器在 preinit 和控件在 oninit 中初始化。 preinit phaze 和 oninit phaze 有什么区别? 我可以
我想我曾经看到过一个关于这个的例子,但再也找不到了: 有没有办法在全局基础上覆盖 Page_Init() 事件而不创建从 Page 继承的新 MyCustomPage 类? 我希望有某种方法可以在不继
如果AutoEventWireup属性设置为 false ,事件需要手动连接。但是,我似乎无法获得 Page_PreInit开火。我想我可能使接线发生得太晚了(一旦我们已经过了 Page_PreIni
有很多文章解释 ASP.NET WebForms page lifecycle ,但是调用代码隐藏页面中的构造函数和 Page_PreInit 事件之间会发生什么? MSDN 将此时间称为页面的“开始
在 ASP.NET 中创建动态控件的最佳位置在哪里? MSDN Pre_init 说,另一个 MSDN article Init 和 some people 说说 Load 事件(我读到这不好做)。
我是一名优秀的程序员,十分优秀!