对用户控件(ascx)属性(property)赋值
对用户控件(ascx)属性(property)赋值
Insus.NET写此博文,是对用户控件(ASCX)的属性赋值经验与技巧分享。
是这样子的,在做新闻站点时,一般都会有分很多类别。 在站点首页会显示最新,最TOP 或最Hot的新闻或文章,而且是分类别来分的。因此,我们会设计成一个用户控件,用户控件的数据源均是来自Article这个表,只是传入不同的category 的ID值和 Top几条来实现。
用户控件.cs大约如下,高亮代码是两个属性,当然你的真实环境也许只有一个,或是更多的属性。
现在来演示网页引用用户控件,并赋值,分几种方法或是重构优化它们。
在创建一个网页,也就是说,你的网点上,哪个网页需要引用这个用户控件。用户控件呈现是需要在网页aspx。
第一种,最简单常用。打开.aspx,切换至design模式,
然后把用户控件拉入网页:
现在可以切换至source 模式,就可以直接在.aspx赋值了,参考高亮对属性赋值。
第二种,如果你不想在.aspx赋值的话,可以在.aspx.cs进行赋值。把用户控件引入网页之后,按F7来到.aspx.cs代码页。
上面第一种方法与第二种方法,只是赋值的位置不同而已。
OK,我们来演示第三种方法。为了功力发挥最高效果,长远的设计打算,因此Insus.NET先写一个接口,接口主体是一个函数,返回类型就是UserControl。
用户控件实作这个接口,参考下图高亮部分代码:
实现动态加载,不必在网页中的design和source切换来切换去。在网页中拉一个控件容器
去.aspx.cs代码程序,参考下图:
引用两个命名空间#9和#10行代码。其中#9代码,是为了能够应用到Reflection(反射)技术。
第#22行代码,是动态加载用户控件,并转换为接口。
第#25和#31行代码,箭头位置的字符串,就是用户控件的两个Public属性名称。
第#28和#34行代码,即是对两个属性赋值。
第#37行代码,是把用户控件加载入PlaceHolder容器中去。
好的,三种方法,教你怎样在网页中,为用户控件的属性赋值。技术相信你增长不少吧。
整个演示已经完成。
接下为,Insus.NET再给你附送另外的技术,重构。你回过头来看看第三种方法的代码。第25至29与31至35两组代码,相似度都非常高。因此,减少代码的冗余,需要把它们写成一个方法。
拿掉上图片中comment的代码。抽取出来,写成SetValue()方法。这样子,代码就变得清晰多了。成了这个样子:
完成否,还有吗?
是的,没有完成,重构到这里,Insus.NET有想起,每个用户控件,属性有少有多。少的话也许没有什么关系,多的话,还得写很多
SetValue(uc, "TOP", 10);
SetValue(uc, "Category", 1);
这些相似的代码。为了解决这个问题,Insus.NET再次重构它们。希望能得到更好的效果。
其实,还是可以把上图中的第32行代码,写成一个扩展方法:
也就是说,把赋值部分,存放在一个集合中。
呵呵,完成了。方法可以选择性,觉得那一种好,就用那一种。
对用户控件(ascx)属性(property)赋值的更多相关文章
- 在用户控件(ASCX)创建用户控件(ASCX)
"我建了两个ascx,ascxA,ascxBascxA中放了一个PlaceHold,ascxB中放了一个textBoxascxA在page_load中动态创建了5个ascxB但是页面上什么都 ...
- .net 用户控件ascx.cs注册js脚本代码无效果
在.net web项目中碰到一个比较奇怪的问题,网上没找到解决方案,先自己mark一下 问题描述: 添加一个用户控件ascx,在后端.cs添加js注册脚本,执行后没有弹出框 注册脚本为: this.P ...
- ASP.NET MVC中加载WebForms用户控件(.ascx)
原文:ASP.NET MVC中加载WebForms用户控件(.ascx) 问题背景 博客园博客中的日历用的是ASP.NET WebForms的日历控件(System.Web.UI.WebControl ...
- 网页(aspx)与用户控件(ascx)交互逻辑处理实现
几个页面(ASPX)都使用一些相同的控件,一个文本框,二个按钮(搜索和导出),为了以后好维护,把这相同的部分抽取放在一个用户控件(ASCX)上.现需要处理逻辑如下 搜索事件处理的逻辑在各个页面处理. ...
- UWP &WP8.1 依赖属性和用户控件 依赖属性简单使用 uwp添加UserControl
上面说 附加属性.这章节说依赖属性. 所谓依赖属性.白话讲就是添加一个公开的属性. 同样,依赖属性的用法和附加属性的用法差不多. 依赖属性是具有一个get,set的属性,以及反调函数. 首先是声明依赖 ...
- 用户控件(ASCX)向网页(ASPX)传值使用反射实现
用户控件向网页传递值,方法非常之多,此博文尝试使用反射来实现.在站点中,建一个网页以及一个用户控件. 网页切换至设计模式,拉用户控件至网页上. Default.aspx: <%@ Page La ...
- wpf中用户控件的属性重用
我们经常会抽取一些可重用的控件,某个属性是否需要重用,直接决定了这个属性的绑定方式. 1.完全不可重用的控件 有一些与业务强相关的控件,它们的属性完全来自ViewModel,越是相对复杂的控件,越容易 ...
- net7:Web用户控件ascx的使用及其动态加载
原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Web用户控件test.ascx的源代码: using System;using System;using Sys ...
- mvc 用户控件 ascx 获取 View 页面的值
<%Html.RenderAction("AscxSideNav", "UI", new {itemName=ViewData["ItemNam ...
随机推荐
- 音乐TV2015校园招聘A第二大发行量(对中国科学院大学站)
标题叙述性说明:鉴于阵列A,尺寸n,数组元素1至n数位,但是,一些数字多次出现,有些数字不出现.请设计算法和程序.统计数据不会出现什么.什么号码多次出现. 您可以O(n)时间复杂度,O(1)求下完毕么 ...
- 【甘道夫】Ubuntu群集配置 - 免费登陆
引言 这是几年前写的文章,但一直以来该问题被反复问到.所以我决定将它又一次搬上屏幕. 正文 三个节点:masternode slavenode1 slavenode2 第一步:全部节点分别生 ...
- 修改 dll
由于没有源码,想改dll,就要依靠反汇编了. 输入 ildasm.exe 据说也可以直接 C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin 找到该软件 ...
- 将已有的工程项目添加到Xcode到Git管理中
在Xcode中创建工程的时候,我们很容易的可以将新创建的工程添加到Git中,如图: 但是如果是本地已经有的工程,那该如何添加到Git中呢? 首先终端进入到该工程的目录. 然后: git init gi ...
- asp.net mvc3 的数据验证(一)
原文:asp.net mvc3 的数据验证(一) 对于web开发人员来说,对用户输入的信息进行验证是一个重要但是繁琐的工作,而且很多开发者都会忽略.asp.net mvc3框架使用的是叫做“ ...
- WinForm播放视频
原文:WinForm播放视频 1背景 这几天一老友要求我做个小软件,在WinForm播放视频.印象中微软有个WM控件直接可以使用,晚上研究下 2实现方式 2.1微软草根 最简单的方式,是直接使用微软的 ...
- Android SDK 2.2 离线安装
android的普通安装方法非常easy,不必多说. 因为普通安装方法速度非常慢,对一般的用户要数小时的时间等待. 为更高速安装,能够採取离线安装方法.即,先分别下载所需包,再安装. 一,首先下载SD ...
- mysql分表分库
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数 ...
- Math.Round函数四舍五入
Math.Round函数四舍五入的问题 今天客户跑过来跟我说,我们程序里面计算的价格不对,我检查了一下,发现价格是经过折算后的价格,结果是可能小数位较多,而单据上只能打印两位价格,所以就对价格调用 ...
- datagridcolumn单元格怎么显示查询到的某个表的字段值(字段值可能为多个)
例如,在之前做的项目中,查询mhz_xckcr表,select出某个业务的现场勘察人信息,select出的现场勘察人姓名(可能有多个)要在前台datagrid的一个datagridcolmn单元格显示 ...