如何将添加到现有标记的控件自动连接到后面的代码?

时间:2014-11-26 01:22:25

标签: c# asp.net code-behind

我现有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应用程序,在这种情况下不起作用。它创建了一个设计器文件(最初不存在),并从后面的代码中删除所有受保护的成员,打破了编译。

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

1 个答案:

答案 0 :(得分:1)

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

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

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