《asp.net 2.0应用开发技术》 笔记 02

第2章  ASP.NET 2.0服务器控件

1.值得注意的是,HtmlInputButton控件可以执行服务器端的click事件,需要注明是 onserverclick,默认的onclick事件是客户端事件
   web服务器控件 正好相反,onclick 事件是服务端事件,要执行客户端事件要注明是OnClientClick.
2.在使用HTML服务器控件(Web服务器控件一样),请注意区分 ClientID与UniqueID的区别,在母版页、自定义控件和控件嵌套中需要特别注意他们的含义和使用方法。
以下例子描述了这些表好似的含义和规则。
<% @ Import Namespace="System.Data"  %>
<% @ Page language="c#" Codebehind="WebForm3.aspx.cs" AutoEventWireup="false" Inherits="Incentive2008.WebForm3"  %>
< HTML >
    
< HEAD >
        
< title > WebForm3 </ title >
        
< script  runat ="server" >
        
void Page_Load(object sender, System.EventArgs e)
        
{
            
if(!Page.IsPostBack)
            
{
                DataTable dt
=new DataTable();
                DataRow dr;
                dt.Columns.Add(
new DataColumn("ButtonValue",typeof(string)));
                
for(int i=0;i<3;i++)
                
{
                    dr
=dt.NewRow();
                    dr[
0]="按钮"+i.ToString();
                    dt.Rows.Add(dr);
                }

                Repeater1.DataSource
=new DataView(dt);                
                Repeater1.DataBind();
            }
            
        }

void Submit1_Click(Object sender,EventArgs e)
{
    Message.Text
="<li>HtmlInputControl 的 Name 属性值:"+((HtmlInputControl)sender).Name;
    Message.Text
="<li>HtmlInputControl 的 ID 属性值:"+((HtmlInputControl)sender).ID;
    Message.Text
="<li>HtmlInputControl 的 UniqueID 属性值:"+((HtmlInputControl)sender).UniqueID;
    Message.Text
="<li>HtmlInputControl 的 ClientID 属性值:"+((HtmlInputControl)sender).ClientID;
    Message.Text
="<li>HtmlInputControl 的 NamingContainer 属性值:"+((HtmlInputControl)sender).NamingContainer.UniqueID;
    Message.Text
="<li>HtmlInputControl 的 NamingContainer的ParentID 属性值:"+((HtmlInputControl)sender).NamingContainer.Parent.ID;
}

        
</ script >
    
</ HEAD >
    
< body  MS_POSITIONING ="GridLayout" >
        
< form  id ="Form1"  method ="post"  runat ="server" >
            
< asp:Repeater  id ="Repeater1"  runat ="server" >
                
< ItemTemplate >
                    
< input  id ="Submit1"  type =submit  name ="AddButton"  value ='<%#  Eval("ButtonValue")% > ' onserverclick="Submit1_Click" runat=server>
                
</ ItemTemplate >
            
</ asp:Repeater >
            
< br >
            
< br >
            
< asp:Label  ID ="Message"  Runat ="server"   />
        
</ form >
    
</ body >
</ HTML >

运行上面的程序,查看客户端生成的源代码,可以发现,虽然给按钮指定了ID属性和name属性,但是客户端的ID和name并不是
我们指定的,源代码如下:
< input  name ="Repeater1$ctl0$Submit1"  id ="Repeater1__ctl0_Submit1"  type ="submit"  value ="按钮0"   />
< input  name ="Repeater1$ctl1$Submit1"  id ="Repeater1__ctl1_Submit1"  type ="submit"  value ="按钮1"   />
< input  name ="Repeater1$ctl2$Submit1"  id ="Repeater1__ctl2_Submit1"  type ="submit"  value ="按钮2"   />

HtmlInputControl 的 Name 属性值:Repearter1$ctl002$Submit1;
HtmlInputControl 的 ID 属性值:Submit1;
HtmlInputControl 的 UniqueID 属性值:Repearter1$ctl002$Submit1;
HtmlInputControl 的 ClientID 属性值:Repearter1_ctl002_Submit1;
HtmlInputControl 的 NamingContainer的UniqueID 属性值:Repearter1$ctl002;
HtmlInputControl 的 NamingContainer的ParentID 属性值Repearter1:


因此,在编写客户端的程序时,不要用指定的ID值在客户端引用对象,一定要用该对象的ClientID属性传递到客户端的引用。
从上面的例子还可以看到,Name属性和UniqueID属性的命名规则是以“$”分割开来,而ClientID属性是以“_”分割开来,
Repeater1和ctl001等这个都是什么意思呢?如果在页面指令中把Trace=true,就可以看到ASP.NET在解析页面时的控件树
图,命名规则是以命名容器(NamingContainer)控件的ID和该控件ID的值链接而成(注意:不一定是父控件的ID)。服务器
控件的UniqueID会呈现客户端的name属性中,ClientID会呈现到客户点的id属性中。对于需要通过 Request.Form的形式获
得客户端数据的情况,掌握这个属性非常重要。

转载于:https://www.cnblogs.com/daisy-popule/archive/2008/06/18/1224794.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值