操纵自如--页面内的配合与通信
.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中调用就行了。
public void setSelect(string _value)
{
lblMessage.Text = _value;
}
在aspx中直接调用它
{
WebUserControl3_1.setSelect(txtValue.Text);// WebUserControl3_1是用户控件的ID
}
可能大家看得不是很明白,不过总之,在aspx中可以调用ascx中的公共方法,传入想传的参数,就OK了。
如果倒过来,由B->A。
在ascx中改变aspx中的一个Label,也只换种方式
lblMessage.Text = txtValue.Text;
也就是说,可以在ascx中查找当前aspx页的控件ID,找到了,直接赋个值就行了。反正,只要找到这个控件,用起来就好像自己的一样。
2、master与aspx的通信
在master中访问aspx中的东西也是查找控件,和ascx中查找aspx中差不多
lblMessage.Text = txtValue.Text;
倒过来,aspx可以调用masterpage的公共方法
master.setValue(txtValue.Text);//调用masterpage的方法
3、master中的ascx 与 master中的aspx通信
从master中的ascx到master中的aspx,需要通过master,查找ContentPlaceHolder,再查找Label
Label _lblMessage = (Label)master.FindControl("ContentPlaceHolder1").FindControl("lblMessage");
_lblMessage.Text = txtValue.Text;
aspx要想与masterpage的ascx联系,要先得到master,再查找ascx,再查找Label。
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
内容:
{
void setSelect(string value);
}
在WebUserControl1.ascx继承该接口,并实现其方法。
{
public void setSelect(string _value)
{
lblMessage.Text = _value;
}
}
然后直接在webUserControl2.ascx调用webUserControl1.ascx中的方法
userControl1.setSelect(txtValue.Text);//setSelect是webUserControl1.ascx中的方法,调用它。
这实际上是很好的一种方法,这样来做,其它类型的控件间通信应该都能实现,在那几天,我还一直沾沾自喜着呢。通过这一样一个例子,也发现接口确实不简单,真的是一个“接口”。
.net的partial类的引入使用我的可以在各个文件中实现一个,最后合并在一起,而通过这些小技巧,又可以把各部分联系起来,成为一个真正的“整体”。
操纵自如--页面内的配合与通信相关推荐
- js 跳转到指定位置 高德地图_在H5页面内通过地址调起高德地图实现导航
项目中用到的一个功能是要通过点击地址来实现打开地图app实现地址导航. 如下图: 实现思路就是在H5页面内通过点击marker图标然后进行当前位置与页面上地址的路程规划与导航. 由于项目中用到的是高德 ...
- php js统计链接点击次数,JS实现在线统计一个页面内鼠标点击次数的方法
本文实例讲述了JS实现在线统计一个页面内鼠标点击次数的方法.分享给大家供大家参考.具体实现方法如下: js记录鼠标的点击次数 function addCookie(name,cookievalue,t ...
- 网站页面内链如何布局才更有利于SEO?
在网站优化中,网站内链所发挥的作用不言而喻.合理布局的内链不仅方便用户浏览,还更加吸引搜索引擎蜘蛛对网站的爬行和抓取,从而更高效的提升用户体验以及网站权重,对网站的收录量提升也有积极的作用,那么网站页 ...
- python爬虫如何从一个页面进入另一个页面-Python爬虫如何获取页面内所有URL链接?本文详解...
如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...
- html怎样同框架页面内跳转,使用iframe框架时,实现子页面内跳转到整个页面,而不是在子页面内跳转...
首先先来描述一下我所遇到的问题,我在一个首页的index.jsp页面中用到了iframe框架,见下图 在iframe中引入jsp页面的路径,是几个iframe框架组合成的一个完整的页面,但是他们的存在 ...
- android页面跳转时获取地址栏,Android 利用scheme页面内跳转协议进行跳转
什么是 URL Scheme? android中的scheme是一种页面内跳转协议. 通过定义自己的scheme协议,可以非常方便跳转app中的各个页面: 通过scheme协议,服务器可以定制化告诉A ...
- python爬虫获取url_Python爬虫如何获取页面内所有URL链接?本文详解
如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...
- vue 页面不置顶问题(页面内操作、页面跳转后) - 集合篇
文章目录 vue 页面内切换dom,页面跳转后 都不置顶? 一.页面内操作: 1.1 代码如下: 二.页面之间跳转: 2.1 代码截图 · 说明: 2.2 增加代码 · 示下: 三.拓展 · (直接置 ...
- 微信H5页面内实现一键关注公众号
H5页面内实现关注公众号的微信JSSDK没有相关接口开放,因此就得动点脑筋来实现该功能了.下面的方法就是通过一种非常蹊跷的方式实现的. 首先,需要在公众号内发表一篇原创文章,注意是原创文章,然后由另一 ...
最新文章
- 2022-2028年中国文化创意产业园区域发展模式与产业整体规划研究报告
- 设计模式之简单工厂模式学习笔记
- 《JavaScript高级程序设计 第3版》-学习笔记-1
- 实战tcpdump看RST
- Qt Creator文本
- 计算机设计大赛国奖作品_5. 模拟退火求解旅行商问题
- HTTP 协议中 Vary 的一些研究
- Enterprise Solution 应用程序开发框架培训
- 分析器错误信息: 未能加载类型命名空间.类...
- linux下静默安装weblogic 12
- wifi的country code
- linux安装vmware没有网络,关于无桌面的linux安装VMWare Tools配置的教程
- BeyondDesk 桌面小工具集合/时钟日历黄历便签相框天气时间/托盘时钟 [开放代码]
- php和plc哪个难,致PLC初学者的入门一课,七大误区如何解决?
- 可道云、NextCloud和Seafile使用体验比较哪个好用
- win7修复音频服务器,win7系统下realtek高清晰音频管理器没有声音怎么修复
- 交换机MAC地址学习与转发机制
- Openwrt 安全模式failsafe分析
- Google Earth Engine(GEE)——1981年至今全球逐日降水数据集(最终版)
- 安装移动视频监控 即时监控地铁车厢
热门文章
- VTK:Filtering之SelectionSource
- C++求一个整数的各位数字总和(附完整源码)
- C语言三路基数快排multikey quick sort算法(附完整源码)
- java集群解析文件_干货:一文详解Redis集群原理核心内容
- flex 换主轴后子元素占满_css flex justify-content属性,子元素在主轴上的对齐方式。...
- 定义范围中的备选方案生成、横向思维、创建WBS、工作包定义、WBS、确认范围过程和实施质量过程的关系、联合应用设计和质量功能展开QFD
- 关于Maven中的常见命令,通过命令的方式快速创建一个空的maven工程,将jar包打到maven仓库中
- 02_Nginx基本配置与参数说明 + 辅助命令
- 7.Eclipse中创建新Maven项目
- 【C语言】%[修饰符] 格式字符