webparts(web part)简单的通讯

本文介绍如何在ASP.NET 2.0中实现WebParts之间的通讯,包括创建通讯接口、Provider WebPart及Consumer WebPart,并演示如何通过测试页面展示通讯效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         在学习webpairts的过程刚刚可以调式并运行一些简单的例了,按照我转的ASP.NET 2.0中使用webpart系列控件 中做到通讯的时候,就开始看不懂了,因为我习惯了c#,有点看不懂vb.net所以很累,上网找一个c#研究了一下,好不容易可以把程序运行出来了,可是有的地方还是看不懂,又专门补了的一下c#的知识可是还是没有研究出来,我想做的动态通讯,可是现在做出来的静态的通讯,不管怎样是做出来的一个。以后在慢慢的研究吧。要是有那位高手看到我的发这片文章,最好能我点指点,给程序写点注释。

 1:新建website  
      2.0里面web项目不叫project了,叫website。  
   
  2:建立代码文件夹  
      右击website/新建文件夹/命名为“Code”。这是2.0里面的新特性,系统会在需要的时候到名字为“Code”的文件夹下找相关定义。  
   
  3:建立简单的通讯接口。右击“Code”文件夹/新建一个类文件/命名为“IMessage”。具体定义如下。  
      public   interface   IMessage    
      {  
          string   Message   {   get;}  
      }    
   
  4:建立Provider   WebPart  
      这是一个提供服务的webpart。我们通过向上加一个UserControl来制作简单的webpart。  
      注意:webpart框架只是运行这个webpart,如果放入其中的Control不是直接继承自webpart或者间接使用(比如UserControl之类的),那么webpart知识包装这个Control成“GenericWebPart”。    
      右击website新建一个UserConrol,命名为ProviderWebPart.ascx。这个控件继承自接口IMessage;有一个具有ConnectionProvider属性的方法GetMessage,该方法会把自己(this)返回;该控件还有一个按钮和文本框,用来改变Message。  
      代码如下:  
  <%@   Control   Language="C#"   ClassName="ProviderWebPart"   %>  
  <%@   Implements   Interface="IMessage"   %>  
  <script   runat="server">  
           
          [ConnectionProvider("Message")]  
          public   IMessage   GetMessage()    
          {  
                  return   this;  
          }  
           
          public   string   Message    
          {  
                  get    
              {  
                          return   _messageTextBox.Text;  
                  }  
          }  
  </script>  
  <asp:TextBox   Runat="server"   ID="_messageTextBox"   />  
  <asp:Button   Runat="server"   ID="_postBackButton"   Text="Change   the   Text"   />    
   
  5:建立Consumer   WebPart。  
      这个是用来使用消息的webpart。也是使用的一个UserControl。  
      右击website,新建名为ConsumerWebPart.ascx   的一个UserControl  
      这里面有一个具有ConnectionConsumer属性的方法,用来通讯。在他的OnPreRender事件里显示结果(因为这个这个事件触发的时候系统应该已经完成通讯了)  
      代码如下:  
  <%@   Control   Language="C#"   ClassName="ConsumerWebPart"   %>  
   
  <script   runat="server">  
          private   IMessage   _message;  
           
          [ConnectionConsumer("Message")]   
          public void   SetMessage(IMessage   message)    
          {  
                  this._message   =   message;  
          }  
   
          protected   override   void   OnPreRender(EventArgs   e)    
          {  
                  if   (_message   !=   null)    
                          _messageLabel.Text   =   _message.Message;  
                  base.OnPreRender(e);  
          }  
   
  </script>  
  <asp:Label   Runat="server"   ID="_messageLabel"   />    
   
  这个ConnectionConsumer属性就是一个receiver。  
   
  6:建立测试页面  
      创建一个aspx页面(我直接使用的default.aspx页面)  
      放置一个WebPartManager控件,编辑StaticConnections属性,添加一个connection,设置ID="SampleConnection"   ConsumerID="ConsumerWebPart1"   ProviderID="ProviderWebPart1"   />。  
      然后放置一个WebPartZone   控件,向里面拖入刚才创建的两个UserControl(也就是webpart了)。  
          结果代码如下:  
  <%@   Page   Language="C#"   %>  
  <%@   Register   TagPrefix="uc1"   TagName="ProviderWebPart"   Src="ProviderWebPart.ascx"   %>  
  <%@   Register   TagPrefix="uc2"   TagName="ConsumerWebPart"   Src="ConsumerWebPart.ascx"   %>  
  <html>  
  <head>  
          <title>Sample   Page</title>  
  </head>  
  <body>  
          <form   id="form1"   runat="server">  
                  <asp:WebPartManager   ID="WebPartManager1"   Runat="server">  
                          <StaticConnections>  
                             <asp:WebPartConnection ID="SampleConnection" ConsumerID="ConsumerWebPart1" ProviderID="ProviderWebPart1"/>  </StaticConnections>  
                  </asp:WebPartManager>  
                  <asp:WebPartZone   ID="WebPartZone1"   Runat="server">  
                          <ZoneTemplate>  
                                  <uc1:ProviderWebPart   Runat="server"   ID="ProviderWebPart1"   />  
                                  <uc2:ConsumerWebPart   Runat="server"   ID="ConsumerWebPart1"   />  
                          </ZoneTemplate>  
                  </asp:WebPartZone>  
          </form>  
  </body>  
  </html>    
   
  7:运行。

这样一个webparts之间的一个简单通讯就做完了。我在学习webparts之间老是爱以“webparts”为关键字搜索,可是昨天无意用了一下“web part ”为关键字,又搜到很多的文章。对于想学webparts人有所帮助,不要像我学习webparts中,像个无并头的苍蝇,乱撞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值