`
guochunyang2004
  • 浏览: 80275 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

操纵自如--页面内的配合与通信

 
阅读更多

操纵自如--页面内的配合与通信

.NET的页面看似一个整体,却可能是由很多不同的区域组合而来的,常常用到的母版页、用户控件就是最鲜明的例子。 然而在一个页面内的元素要形成一个整体,就少不了控件之间的通信与传值,本文是个人在不断的使用过程中总结的一些东西,有谬误或有更好的解决方案,还请提出来。 在写这篇文章的过程中我做了一些一示例,以作佐证。这些示例的目的都是 在“A”中 把 “B”中 的一个Label的值改变。 这样的做法有什么意义? 比如说你在masterpage中含有一个GridView,在aspx改变了一些数据,而这些数据正是影响到masterpage中的GridView的呈现内容,那么你就有必要在aspx中通知masterpage更新了。本文的目的就是要说,如何去通知它的更新。 本文包括以下几个部分: 1、aspx与ascx的通信 2、master与aspx的之间的通信 3、master中的ascx 与 master中的aspx通信 4、ascx与ascx之间的通信

1、aspx与ascx的通信

一个简单的示例,在这个例子中,一共有两个文件:UserControl-Page.aspx和WebUserControl3.ascx,两个文件之中均含有一个TextBox、Label和一个Button 在这里,我们使用A和B来简称前者和后者。 要求的效果是:点击A中的Button,能将A中TextBox中的值赋给B中的Label;反之,点击B中的Butoon,要将B中TextBox中的值赋给A中的Label。 也就是说,它们两个能改变对方的控件内容。 首先说A->B 这是很简单的,在Ascx中写一个公共的方法,在aspx中调用就行了。

//这是在ascx中的方法,该方法将参数_value的值赋给Label。 public void setSelect(string _value) { lblMessage.Text = _value; }

在aspx中直接调用它

protected void btnSet_Click(object sender, EventArgs e) { WebUserControl3_1.setSelect(txtValue.Text);// WebUserControl3_1是用户控件的ID }

可能大家看得不是很明白,不过总之,在aspx中可以调用ascx中的公共方法,传入想传的参数,就OK了。

如果倒过来,由B->A。

在ascx中改变aspx中的一个Label,也只换种方式

Label lblMessage= (Label)Page.FindControl("lblMessage"); lblMessage.Text = txtValue.Text;

也就是说,可以在ascx中查找当前aspx页的控件ID,找到了,直接赋个值就行了。反正,只要找到这个控件,用起来就好像自己的一样。

2、master与aspx的通信

在master中访问aspx中的东西也是查找控件,和ascx中查找aspx中差不多

Label lblMessage= (Label)ContentPlaceHolder1.FindControl("lblMessage"); lblMessage.Text = txtValue.Text;

倒过来,aspx可以调用masterpage的公共方法

MasterPage master = (MasterPage)Page.Master;//转换为masterpage的类型 master.setValue(txtValue.Text);//调用masterpage的方法

3、master中的ascx 与 master中的aspx通信

从master中的ascx到master中的aspx,需要通过master,查找ContentPlaceHolder,再查找Label

MasterPage master = (MasterPage)Page.Master; Label _lblMessage = (Label)master.FindControl("ContentPlaceHolder1").FindControl("lblMessage"); _lblMessage.Text = txtValue.Text;

aspx要想与masterpage的ascx联系,要先得到master,再查找ascx,再查找Label。

MasterPage master = (MasterPage)Page.Master; Label lblMessage=(Label)master.FindControl("WebUserControl4_1").FindControl("lblMessage"); lblMessage.Text = txtValue.Text;

这个双方互通是一样的原理哦。

4、ascx与ascx之间的通信

这应该是最常见的情况,前段时间做的项目,分两个区域,用户在A区域从事活动,B区域记录下他活动的信息,这两个区域都是用户控件。 一种方法是从a.ascx中查找Aspx,再查找B.ascx,再查找Label。 这种方向理论上的行得通的,不过我没试,因为这种方法必须考虑B控件在A中的ID,我却不想与ID发生任何关系。 所以我用接口。 假设现有WebUserControl2.ascx想操纵WebUserControl1.ascx中的控件。 在app_code中新建一个IUserControl1.cs 内容:

public interface IUserControl1 { void setSelect(string value); }

在WebUserControl1.ascx继承该接口,并实现其方法。

public partial class UserControl_WebUserControl1 : System.Web.UI.UserControl, IUserControl1 { public void setSelect(string _value) { lblMessage.Text = _value; } }

然后直接在webUserControl2.ascx调用webUserControl1.ascx中的方法

IUserControl1 userControl1 = (IUserControl1)Page.FindControl("WebUserControl1_1");//转化到接口去 userControl1.setSelect(txtValue.Text);//setSelect是webUserControl1.ascx中的方法,调用它。

这实际上是很好的一种方法,这样来做,其它类型的控件间通信应该都能实现,在那几天,我还一直沾沾自喜着呢。通过这一样一个例子,也发现接口确实不简单,真的是一个“接口”。

.net的partial类的引入使用我的可以在各个文件中实现一个,最后合并在一起,而通过这些小技巧,又可以把各部分联系起来,成为一个真正的“整体”。

分享到:
评论

相关推荐

    [.net] 操纵自如-页面内的配合与通信

    【.NET 页面内配合与通信详解】 在.NET框架中,构建复杂的Web应用程序时,往往需要在页面的不同组件之间进行通信和协作。这涉及到母版页(MasterPage)、用户控件(UserControl)以及普通页面(aspx)之间的交互。...

    关于操纵自如的造句参考.doc

    关于操纵自如的造句参考.doc

    通信工程中5g移动通信技术应用-通信技术-通信传播.pdf

    本文以5G通信技术为主视角,通过文献资料的收集整理界定5G移动通信的理论,明确其内在特性以及相比4G技术具有的优势,最后从覆盖率与网络智能等方面探究在通信工程中的应用,以期推动通信工程行业高质量创新发展。...

    Python-Python爬虫框架内置微博自如豆瓣图书拉勾网拼多多等爬虫

    本资源"Python-Python爬虫框架内置微博自如豆瓣图书拉勾网拼多多等爬虫"提供了一个集成多个知名网站爬虫的框架,旨在帮助开发者更高效地进行数据抓取。其中包含的PyLoom-master文件可能是该框架的核心代码库。 1. *...

    西门子S7-200SMART_MODBUS主站通信编程实例.rar

    西门子S7-200SMART是一款紧凑型PLC,广泛应用于自动化系统中,而MODBUS通信协议则是一种常用的标准通信协议,...通过实践这个编程实例,你将能够自如地进行MODBUS通信编程,实现PLC与其他MODBUS从站设备的有效交互。

    最新版收房合同--自如.pdf

    最新版收房合同--自如.pdf

    单片机-串口通信

    单片机-串口通信-发送命令,了解其操作原理,让我们应用自如单片机

    自如房屋租赁合同.pdf

    - 承租人需配合自如定期上门查表,及时支付账单。 - 对于无法查表的情况,自如有权预估费用,后续根据实际使用情况进行调整。 #### 八、总结 通过上述解析可以看出,《自如房屋租赁合同》涵盖了从合同生效条件、...

    仿写自如租房网

    Servlets是Java Web应用的核心组件,可以与JSP配合工作,提供后端服务。 【JDBC(Java Database Connectivity)】是Java中连接数据库的标准接口,允许Java程序与各种数据库系统进行交互。在"仿写自如租房网"项目中...

    Python-ziroomrealtimespider自如实时房源提醒

    【Python-ziroomrealtimespider自如实时房源提醒】是一个基于Python的Web爬虫项目,主要用于抓取自如网上的实时房源信息,并进行自动化提醒。这个项目的核心目标是帮助用户实时监控自如平台上的房源更新,以便在有...

    python爬取自如租房网站租房数据最详细的讲解

    对自如租房网站拥有着详细的解析,依次从租房页面到租房信息详情页面都十分详细,为学习python的同学打开爬虫之旅,可以作为python爬虫入门代码,拿到便可以运行。上手简单没有门槛,可以作为入门的第一个爬虫代码。...

    labview GPIB通信的资料

    在LabVIEW中,GPIB(通用接口总线)通信是连接和控制各种科学与工程设备,如示波器、数据采集卡、信号发生器等的重要手段。GPIB协议允许多个设备在一个网络上进行通信,广泛应用于实验室自动化和工业控制领域。 ...

    自如网头部和底部

    自如网头部和底部的设计与实现涉及到了网页布局、动态效果以及数据存储等多个IT知识点。首先,我们要理解自如网是一个提供租房服务的平台,其头部和底部是用户在浏览页面时最先接触的部分,因此它们的设计至关重要。...

    JqueryMobile快速上手教程-实训任务书06-模态对话框-照片墙页面.zip

    **jQuery Mobile 快速上手教程** jQuery Mobile 是一个轻量级、触控优化的 JavaScript 框架,专门设计用于构建跨平台、响应式的移动 Web 应用。...在实践中不断探索和熟悉,你将能够自如地构建出功能完善的移动应用。

    通信类专业英语,ppt教程

    通过这个PPT教程,学习者可以逐步提高自己的专业英语水平,从而在阅读国际期刊、参加国际会议或者与海外同行交流时更加自如。同时,这也为那些希望深入研究通信技术或从事相关工作的人提供了必要的语言支持。 总之...

    基于嵌入式微处理器的G P R S 无线通信终端的实现

    GPRS无线通信网络以其实时在线、按量计费、快捷登录、高速传输、自如切换等优点,在数据采集、无线上网、环境监控、工业控制等领域展现出了巨大的应用潜力。 本文旨在介绍一种基于ARM9的嵌入式无线通信终端实现方案...

    基于nodejs实现的串口通信

    在IT行业中,串口通信是一种常见且重要的通信方式,尤其在嵌入式系统、工业设备以及物联网(IoT)应用中。Node.js作为一款强大的...通过深入学习和实践,你将能够自如地应对各种串口通信场景,为你的项目增添更多可能性。

    王自如二手手机在哪里买-怎么买-.doc

    王自如二手手机在哪里买-怎么买-.doc

Global site tag (gtag.js) - Google Analytics