如何使添加到现有标记的控件自动挂接到隐藏的代码

本文关键字:代码 隐藏 控件 添加 何使 | 更新日期: 2023-09-27 18:31:54

我有一个现有的page.aspx,里面有一堆控件:

<%@ Page Trace="false" Language="c#" Codebehind="page.aspx.cs" 
    AutoEventWireup="true" ValidateRequest="False" %>
<asp:CheckBox id="test1" runat="server" />
<asp:CheckBox id="test2" runat="server" />
<asp:TextBox id="test3" runat="server" />

以及一个 page.aspx.cs 后面的代码,该代码声明与标记中的每个控件具有相同类型和名称的受保护成员:

protected CheckBox test1, test2;
protected TextBox test3;

创建页面时,将自动初始化这三个成员以引用相应的控件。

然后,我添加一个新控件:

// In page.aspx
<asp:TextBox id="test4" runat="server" />
// In page.aspx.cs 
protected TextBox test4;

test4成员未初始化。它保持为空。

我能找到的唯一"解决方案"是将页面转换为 Web 应用程序,这在这种情况下不起作用。它创建一个设计器文件(最初不存在),并从代码隐藏中删除所有受保护的成员,从而破坏编译。

如何使我的新控件自动连接?

如何使添加到现有标记的控件自动挂接到隐藏的代码

如果它是一个 Web 应用程序,默认情况下,您的 aspx 页应该有一个设计器文件。但是,如果您的项目是一个网站,那么.aspx页面将没有设计器文件,并且每个页面都由VS编译器动态编译。VS 在以下临时文件夹中创建的文件很少(路径取决于您的 .Net 框架版本)

C:'Windows'Microsoft.NET'Framework64'v4.0.30319'Temporary ASP.NET Files

话虽如此,您可以通过删除 @Page 指令的 Inherits 属性来创建没有设计器文件的 aspx 文件。然后,您必须自己初始化控件,这不是自动的。值得尝试一个干净的构建。