protectedvoidPage_Load(objectsender,EventArgse)
{
Label1.Text=Request.Params["TextBox1"];
}
按照理解,在点击Button后,Label1会显示TextBox1中的值。但是结果什么也没有。原因是:
MSDN解释:任何实现该接口的控件都创建一个新的命名空间,在这个新的命名空间中,所有子控件ID属性在整个应用程序内保证是唯一的。由该接口提供的标记允许在支持数据绑定的Web服务器控件内唯一命名动态生成的服务器控件实例。这些控件包括Repeater、DataGrid、DataList、CheckBoxList、ChangePassword、LoginView、Menu、SiteMapNodeItem及RadioButtonList控件。
其它解释:
.Request.Form根据ClientID获取值,而不是ID。嵌套在Repeater或者FormView这类控件里面,ClientID是自身ID加上容器控件的ID作为前缀,因此不同于ID本身。
.因为嵌套了容器控件,所以在Page级别进行FindControl也是找不到的,你要在容器控件上做FindControl。
上面的例子应该修改成:
protectedvoidPage_Load(objectsender,EventArgse)
{
TextBoxtb=(TextBox)Page.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1");
Label1.Text=tb.Text;
}
当然,以上针对服务器控件来看,好像是多余了,直接使用Label1.Text = TextBox1.Text就可以了。
但是,如果是HTML控件,这样就比较有效果了。比如:
<asp:ContentID="Content2"ContentPlaceHolderID="ContentPlaceHolder1"Runat="Server">
<asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager>
<asp:UpdatePanelID="UpdatePanel1"runat="server"UpdateMode="Conditional">
<ContentTemplate>
<inputtype=hiddenid="Dynamic_UserControl_Hidden1"runat="server"/>//HTML控件
<asp:ButtonID="Button1"runat="server"Text="Button"onclick="Button1_Click"OnClientClick="ShowControl()"/>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
以上,在页面刷新后想取得Dynamic_UserControl_Hidden1中的值,可以这样:
protectedvoidPage_Load(objectsender,EventArgse)
{
//嵌套容器,在容器上做FindControl
HtmlInputHiddenhiHidden=(HtmlInputHidden)UpdatePanel1.ContentTemplateContainer.FindControl("Dynamic_UserControl_Hidden1");
Label1.Text=hiHidden.Value;
}
然后,还有一个就是javascript的问题:
在脚本中使用以下语句会得到"为空或不是对象"的错误
document.getElementById("TextBox1").value
主要原因也是因为在生成页面后,控件的ID被变掉了。可以使用以下语句
document.getElementById("<%=TextBox1.ClientId%>”).value;
具体的,可以查询以下几个URL:
http://www.itstrike.cn/Home/Article/Asp.net-in-the-master-page-ID-of-the-control-treatment
http://topic.csdn.net/u/20080503/18/205102e1-7f6c-4858-970e-f7b9ce390b0e.html
http://msdn.microsoft.com/zh-cn/library/system.web.ui.inamingcontainer%28VS.85%29.aspx
优质内容筛选与推荐>>
1、Struts---MVC(简介)2、web初探-css-设置表格样式3、LeetCode #5 Longest Palindromic Substring (M)4、Web页面打印5、程序算法与人生选择
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
好看
已推荐到看一看
你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
取消
分享想法到看一看
确定
最多200字,当前共字
微信扫一扫
关注该公众号