zoukankan      html  css  js  c++  java
  • 关于Request.Form和动态添加服务器控件

    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之后 加载的控件委托是无效的

  • 相关阅读:
    移动终端app测试点总结
    Appium+Java(一) Windows环境搭建篇
    BeanShell用法汇总(部分摘抄至网络)【转】
    JVM的GC实现详解
    JVM的GC理论详解
    JVM的栈内存
    JVM的基本结构
    JVM的生命周期
    JVM的启动流程
    JVM的粗略简述
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/1310251.html
Copyright © 2011-2022 走看看