C# 控件消失等问题

控件消失原因:

  1.新控件的触发导致页面重载,该重载有没有达到原有控件的触发状态进而消失。

  2.(目前只发现这一点,后续又发现再更...)

1.示例:

ASPX:
<div>
        <!-- button按钮 -->
        <asp:Button  runat="server" Text="Button" OnClick="Button1_Click" />
        <!-- Panel容器,可在里面放控件 -->
        <asp:Panel  runat="server"></asp:Panel>
        <!-- PlaceHolder空白占位符 -->
        <asp:PlaceHolder  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

即可自动安装。