陋室铭
永远也不要停下学习的脚步(大道至简至易)

posts - 2169,comments - 570,views - 413万

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

posted on   宏宇  阅读(735)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
< 2008年10月 >
28 29 30 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示