控件消失原因:
1.新控件的触发导致页面重载,该重载有没有达到原有控件的触发状态进而消失。
2.(目前只发现这一点,后续又发现再更...)
1.示例:
ASPX: <div> <!-- button按钮 --> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> <!-- Panel容器,可在里面放控件 --> <asp:Panel ID="Panel1" runat="server"></asp:Panel> <!-- PlaceHolder空白占位符 --> <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> </div> ///////////////// CS: protected void Page_Load(object sender, EventArgs e) { // } protected void Button1_Click(object sender, EventArgs e) { TextBox t = new TextBox(); t.Text = "hello"; // 如果下面的Panel1和PlaceHolder1同时添加t,后者会覆盖前面的并且只有一个t,因为创建的t的ID已经固定,并且网页不允许相同ID //this.Panel1.Controls.Add(t); this.PlaceHolder1.Controls.Add(t); Button b = new Button(); b.Text = "hello"; b.ID = "123"; // 定义button的click事件。注,当用户点击该事件时,并没有使button1按钮的内容改变为"heibeibei" // 原因是:当点击click事件后,页面进行重新加载,而t/b属于动态创建的控件,并没有达到重载的触发条件,只会重载能够执行的页面,显示的效果是t/b全部消失 // 如果要现实t/b可以放在Page_Load重载写这部分代码,又或者使用状态寄存(我这么菜,我也不懂诶,等我看到再更呗......) b.Click += (sender2, e2) => { this.Button1.Text = "heibeibei"; }; this.PlaceHolder1.Controls.Add(b); }
未能加载文件或程序集“Microsoft.Web.Infrastructure,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
解决办法:
工具=》NuGet程序包管理器=》程序包管理器控制台,在下面弹出来的命令行输入:PM> Install-Package Microsoft.Web.Infrastructure
即可自动安装。