首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在ASPX页面中使用构造函数(无代码隐藏)

在ASPX页面中使用构造函数(无代码隐藏)
EN

Stack Overflow用户
提问于 2012-06-07 15:55:03
回答 1查看 2.1K关注 0票数 2

我可以在没有代码隐藏文件的ASPX页面中实现构造函数吗?

我有一个页面"test.aspx“,我尝试包括一个构造函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%@ Page Language="C#" %>
<script runat="server">
    public dd_prop_test_aspx() : base() { /* Do stuff */ }
</script>

但是,运行时编译器给出了一个错误:

CS0111:类型'ASP.test_aspx‘已经用相同的参数类型定义了一个名为'test_aspx’的成员

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Line 558:        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
Line 559:        public test_aspx() {
Line 560:            string[] dependencies;

我可以指定一个指令来不自动生成构造函数(就像编译器所做的那样)?或者,我还有别的办法来解决这个问题吗?

最后,我希望在Page_PreInit之前在类中设置变量,因此,如果存在不使用构造函数的解决方案,那么这也是可行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-20 14:47:34

虽然不能重新声明构造函数,但只要不在旁边的代码中重写,就可以重写<script runat="server">标记中的任何方法。此外,您还可以添加页面事件处理程序(同样的限制也适用),如Page_PreInit

由于您可以同时使用页面事件和覆盖,所以您可以预先注入代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script runat="server">
    void Page_PreInit(object sender, EventArgs e) 
    {
        Response.Write("First?");
    }

    protected override void OnPreInit(EventArgs e)
    {
        base.OnPreInit(e); // implicitly calls Page_PreInit
        Response.Write("Second!");
    }
</script>

因此,如果在代码后面使用Page_PreInit作为页面事件处理程序,则可以在.aspx中使用OnPreInit的覆盖,并将代码放在对base.OnPreInit(e)的调用之前。

如果要在代码后面重写OnPreInit,则可以在.aspx中声明Page_PreInit,这取决于在逻辑后面或之后调用base.OnPreInit(e)的位置。

换句话说:你可以完全控制事情发生的时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10941439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文