Request.Form["Text1"],如果是客户端控件,
<asp:TextBox ID="Text1" runat="server"></asp:TextBox> framework会自动解释成带有name标记,在客户端自动有name
<input id="Text1" type="text" />错误必须有name
<input id="Text1" type="text" name="Text1" />
动态添加服务器控件
if (!IsPostBack)
{
Label ll=new Label();
ll.ID = "ll";
}
错误,去掉if (!IsPostBack)
protected void Button1_Click(object sender, EventArgs e)
{
Label ll = Page.Form.FindControl("ll") as Label;
}
动态添加控件状态并没有注册到viewstate里,所以每次PostBack都需要重新注册,
当然如果页面有这个控件的话,只是重新注册,而不是初始化,告诉服务器我是服务器控件,别当一般泡处理:),所以客户端赋值是能取到的。
上面的话总结的有些错误,当request回服务器时,视图状态viewstate只存一些服务器控件的状态,唯一ID宽高等,回到服务器它还是需要重新初始化的,只不过动态添加的控件需要手动初始化
引用一句话“控件从来不会放入ViewState。如果你在页面设计时放置一个控件,那么页面每一次实例化的时候都会重新根据设计代码所编译出的可执行代码,重新创建这个控件。而如果你在页面运行时动态产生一个控件,就要保证下一次页面page_load结束之前自己的代码中重建这个控件(因为page_load之后 asp.net会立刻给这个控件装载状态)。””
并且在page_load之后 加载的控件委托是无效的