对用户控件(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)赋值的更多相关文章

  1. 在用户控件(ASCX)创建用户控件(ASCX)

    "我建了两个ascx,ascxA,ascxBascxA中放了一个PlaceHold,ascxB中放了一个textBoxascxA在page_load中动态创建了5个ascxB但是页面上什么都 ...

  2. .net 用户控件ascx.cs注册js脚本代码无效果

    在.net web项目中碰到一个比较奇怪的问题,网上没找到解决方案,先自己mark一下 问题描述: 添加一个用户控件ascx,在后端.cs添加js注册脚本,执行后没有弹出框 注册脚本为: this.P ...

  3. ASP.NET MVC中加载WebForms用户控件(.ascx)

    原文:ASP.NET MVC中加载WebForms用户控件(.ascx) 问题背景 博客园博客中的日历用的是ASP.NET WebForms的日历控件(System.Web.UI.WebControl ...

  4. 网页(aspx)与用户控件(ascx)交互逻辑处理实现

    几个页面(ASPX)都使用一些相同的控件,一个文本框,二个按钮(搜索和导出),为了以后好维护,把这相同的部分抽取放在一个用户控件(ASCX)上.现需要处理逻辑如下 搜索事件处理的逻辑在各个页面处理. ...

  5. UWP &WP8.1 依赖属性和用户控件 依赖属性简单使用 uwp添加UserControl

    上面说 附加属性.这章节说依赖属性. 所谓依赖属性.白话讲就是添加一个公开的属性. 同样,依赖属性的用法和附加属性的用法差不多. 依赖属性是具有一个get,set的属性,以及反调函数. 首先是声明依赖 ...

  6. 用户控件(ASCX)向网页(ASPX)传值使用反射实现

    用户控件向网页传递值,方法非常之多,此博文尝试使用反射来实现.在站点中,建一个网页以及一个用户控件. 网页切换至设计模式,拉用户控件至网页上. Default.aspx: <%@ Page La ...

  7. wpf中用户控件的属性重用

    我们经常会抽取一些可重用的控件,某个属性是否需要重用,直接决定了这个属性的绑定方式. 1.完全不可重用的控件 有一些与业务强相关的控件,它们的属性完全来自ViewModel,越是相对复杂的控件,越容易 ...

  8. net7:Web用户控件ascx的使用及其动态加载

    原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Web用户控件test.ascx的源代码: using System;using System;using Sys ...

  9. mvc 用户控件 ascx 获取 View 页面的值

    <%Html.RenderAction("AscxSideNav", "UI", new {itemName=ViewData["ItemNam ...

随机推荐

  1. JS 数组array方法push, pop, unshift, shift, slice,splice,contact, join, sort

    Array:数组对象用来在单独的变量名中存储一系列的值   定义数组:         1. var arrayObj = new Array();         2. var arrayObj = ...

  2. IIS 7.5 使用URL Rewrite模块简单设置网页跳转

    原文 IIS 7.5 使用URL Rewrite模块简单设置网页跳转 我们都知道Apache可以在配置文件里方便的设置针对网页或网站的rewrite,但是最近接手了一组IIS服务器,发现这货简单的没有 ...

  3. 代理模式与Android

    代理模式(Proxy) 一.   什么是代理模式 先来看看官方的说法,代理模式就是为其它对象提供一种代理,以控制对这个对象的訪问. 看来这个官方的说法的确有点官方,看了还是让人感觉不点不知所措,还是不 ...

  4. Hadoop学习之配置Eclipse远程调试Hadoop

    构建完毕Hadoop项目后,接下来就应该跟踪Hadoop的运行情况,比方在命令行运行hadoop namenode–format时运行了Hadoop的那些代码.当然也能够直接通过阅读源码的方式来做到这 ...

  5. final、finally、finalize差异

    final.finally.finalize差异 1.final修饰符 它代表了一类是完美的类,它不能被继承,因此.一个类不能既被标记为final类别.同一时间被标记为abstract. 将变量或者函 ...

  6. 原生态纯JavaScript 100大技巧大收集---你值得拥有

    1.原生JavaScript实现字符串长度截取 function cutstr(str, len) { var temp; var icount = 0; var patrn = /[^\x00-\x ...

  7. C语言对mysql数据库的操作

    原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎么使用而进行查阅的! 我们言归正 ...

  8. JavaEE——Intellij Idea 创建JavaWeb项目

    原文:JavaEE--Intellij Idea 创建JavaWeb项目 折腾Tomcat折腾了两个晚上,第一个晚上怎么都进不了Tomcat的首页,第二个晚上进去了,但是新建的Web项目,在浏览器中运 ...

  9. 生产环境使用Nginx+uwsgi部署Django

    在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...

  10. leetcode第39题--Combination Sum II

    题目: Given a collection of candidate numbers (C) and a target number (T), find all unique combination ...