zoukankan      html  css  js  c++  java
  • 对用户控件(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行代码,写成一个扩展方法:



    也就是说,把赋值部分,存放在一个集合中。
    呵呵,完成了。方法可以选择性,觉得那一种好,就用那一种。

  • 相关阅读:
    《舌尖上的中国》精彩故事
    5年前的笔试题目
    遍历物理模型中的所有表,将表名、表代码、字段名、字段代码全部由小写改成大写
    MongoDB下载文件 百度盘共享
    认识MEAN开发框架[转]
    智能油田
    排课相关参数设置
    spring获取所有被装配类工具
    oracle常用sql集锦
    关于使用easyUI遇到过的一些坑
  • 原文地址:https://www.cnblogs.com/insus/p/3154363.html
Copyright © 2011-2022 走看看