是否可以将ASP.NET修改为不再需要runat=";服务器";?

是否可以将ASP.NET修改为不再需要runat=";服务器";?,asp.net,mono,runtime,ascx,Asp.net,Mono,Runtime,Ascx,我知道为什么runat=“server”当前是必需的(),但一致的意见是,如果您将一个简单的默认值合并到设计中,就不应该需要它(我当然同意) 是否可以修改、扩展、反编译和重新创建、拦截或以其他方式更改ASP.NET解析ASPX和ASCX文件的行为,以便不再需要runat=“server”?例如,我假设Mono的一个版本可以被分支以实现这个目标 如果特定要求有帮助,以下重点介绍一种设计: 在解析过程中,当遇到已配置的命名空间标记(如“asp”)时,元素的runat属性默认为“server” 在解

我知道为什么runat=“server”当前是必需的(),但一致的意见是,如果您将一个简单的默认值合并到设计中,就不应该需要它(我当然同意)

是否可以修改、扩展、反编译和重新创建、拦截或以其他方式更改ASP.NET解析ASPX和ASCX文件的行为,以便不再需要runat=“server”?例如,我假设Mono的一个版本可以被分支以实现这个目标

如果特定要求有帮助,以下重点介绍一种设计:

  • 在解析过程中,当遇到已配置的命名空间标记(如“asp”)时,元素的runat属性默认为“server”
  • 在解析过程中,当遇到已配置的命名空间标记(如“asp”)时,如果元素的runat属性值可用,则应使用该值代替默认值
  • 引入了新的页面级别设置(可以在page指令或web.config中设置),用于指定特定命名空间标记的默认runat值

据我所知,ASP.NET页面处理过程中没有足够深的钩子允许这样做。我知道没有办法覆盖或扩展实际aspx/ascx代码的解析或处理

虽然ASP.NET相当灵活,允许您覆盖许多默认行为(如ViewState的保存/加载方式、会话的存储位置等),但这并不是其中之一


然而。。。从技术上讲,Page对象只是另一个HttpHandler。你可以编写你的处理程序,并用它做任何你想做的事情。您所要做的就是实现Page类所做的一切,然后加入这个额外的功能。:)或者,拉出Reflector并深入查看页面对象的ProcessRequest方法,看看它实际在哪里解析/初始化aspx中声明的对象,您可能会得到如何实现所需功能的线索。但我怀疑你是在浪费时间。

据我所知,ASP.NET页面处理过程中没有足够深的钩子允许这样做。我知道没有办法覆盖或扩展实际aspx/ascx代码的解析或处理

虽然ASP.NET相当灵活,允许您覆盖许多默认行为(如ViewState的保存/加载方式、会话的存储位置等),但这并不是其中之一


然而。。。从技术上讲,Page对象只是另一个HttpHandler。你可以编写你的处理程序,并用它做任何你想做的事情。您所要做的就是实现Page类所做的一切,然后加入这个额外的功能。:)或者,拉出Reflector并深入查看页面对象的ProcessRequest方法,看看它实际在哪里解析/初始化aspx中声明的对象,您可能会得到如何实现所需功能的线索。但是我怀疑你是在浪费时间。

我担心你必须修改整个页面解析器才能完成这项工作,我认为这是不可能的

另一方面,您应该能够创建自己的。请参阅和。您应该能够为.aspx页面创建自己的生成提供程序,并使用它替换内置提供程序

不幸的是,ASP.NET使用的
PageBuildProvider
类是内部的,它用来解析页面的
PageParser
类是密封的。你将完全依靠自己

考虑到
runat=“server”
在ASP.NET中已经存在了十年,我想你会发现这一点不会很快改变


您还将失去设计器支持,但可能您并不关心这一点。

恐怕您必须修改整个页面解析器才能完成此任务,我认为这是不可能的

另一方面,您应该能够创建自己的。请参阅和。您应该能够为.aspx页面创建自己的生成提供程序,并使用它替换内置提供程序

不幸的是,ASP.NET使用的
PageBuildProvider
类是内部的,它用来解析页面的
PageParser
类是密封的。你将完全依靠自己

考虑到
runat=“server”
在ASP.NET中已经存在了十年,我想你会发现这一点不会很快改变


你也会失去设计师的支持,但也许你并不在乎这一点。

感谢showat=“client”不是必需的。2010年4月1日我的问题是:整个事情糟透了。我更喜欢ASP.NET MVC。感谢您不需要showat=“client”。2010年4月1日我的问题是:整个事情糟透了。我更喜欢ASP.NET MVC。对,不太关心设计器支持。。那么,您是否同意,如果PageParser和PageBuildProvider类被反编译并重新组装到一个新的项目/修改的项目中,那么这可能会起作用?我知道这可能是不合法的,但我想知道这是否是理论上的情况。谢谢,我不太关心设计师的支持。。那么,您是否同意,如果PageParser和PageBuildProvider类被反编译并重新组装到一个新的项目/修改的项目中,那么这可能会起作用?我知道这可能是不合法的,但我想知道这是否是理论上的情况。谢谢