asp.net – 在没有子类化页面的情况下全局覆盖Page_PreInit()?
我想有些我看到了一个关于此的例子但是找不到它了:
有没有办法在全局基础上覆盖Page_Init()事件而不创建从Page继承的新MyCustomPage类? 我希望有一些方法可以在没有子类化页面的情况下对页面进行全局覆盖(不需要从子类继承我的页面).我正在考虑关于Global.asax的一些内容,但是对于Page. 这是我希望在每个页面中在PreInit上运行的代码: ' 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 在此先感谢您的时间. 编辑: 截至今天,已有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,他提供了一个初步答案并坚持这个主题,因为我拒绝了我的需求.然后他提供了第二个答案,证明是正确的(标记为已接受的答案). 解决方法
另一种方法是使用页面适配器
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; } } } 然后在App_Browsers / all.browser中注册您的PageAdapter类 <browsers> <browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="TestPageAdapter" /> </controlAdapters> </browser> </browsers> 它将在每个页面init上运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何将服务器错误的http状态代码捕获到ASP.
- asp.net-mvc – !ClrStack -a调用ASP.NET MVC应用程序显示
- asp.net – 连接到MySQL导致错误“未找到数据源名称且未指定
- asp.net-mvc-3 – 为什么ValidationSummary(true)显示属性错
- asp.net-mvc-3 – HTML.DropdownList – 文本字段显示多列的
- asp.net – 是否可以完全在代码中配置ELMAH?
- asp.net-web-api – 如何为代理控制器设置Web API路由?
- asp.net-mvc-4 – ASP.NET MVC 4应用程序捆绑和分类,为什么
- asp.net-mvc – Knockoutjs可编辑网格
- Asp.net中UpdatePanel内FileUpload的正确使用方法
- asp.net-mvc – EntityFramework代码在部署到Azu
- asp.net – page load()或者page init()
- asp.net – 为什么IIS中的Windows /集成身份验证
- asp.net – LinkBut??ton不会在click()上调用
- asp.net-mvc – 在EF 6中设置命令超时
- asp.net-core – 将标识移动到类库ASP.Net Core
- asp.net-mvc-3 – ASP .NET MVC 3实体框架禁用代
- asp.net-mvc – 默认情况下,Html.TextArea会生成
- asp.net – 在asp:Button中包装文本
- asp.net-mvc – ASP.net MVC – 显示模板集合