如何使添加到现有标记的控件自动挂接到隐藏的代码
本文关键字:代码 隐藏 控件 添加 何使 | 更新日期: 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 文件。然后,您必须自己初始化控件,这不是自动的。值得尝试一个干净的构建。