惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
F
Fortinet All Blogs
小众软件
小众软件
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
有赞技术团队
有赞技术团队
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
A
About on SuperTechFans
I
InfoQ
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
C
Check Point Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
MyScale Blog
MyScale Blog

博客园 - 零点时刻

一千万条数据数据搜索问题! 嵌套DataGrid,中如何添加删除事件?(望能暂时放一下,谢谢了!) 嵌套DataGrid,中如何添加删除事件? 计算机类资源网:http://www.3human.com/ 互动形式 用户可以上传资料 今天心情有点郁闷! 动态加载用户控件的组件!(二) (转) Asp.Net Forums研究文章集合(收藏) 【MasterPages实用技巧】为模板增加前端控制①——自动生成页面标题 【MasterPages实用技巧】使用MasterPages实现Web窗体模板 CS研究笔记-缓存 (转) Community Server专题四:HttpHandler Community Server专题八:MemberRole之Membership (转) 主板故障的分析和诊断 c# arraylist functions http://www.metabuilders.com/ 的MasterPages 控件可以多重嵌套 动态加载用户控件的组件!(转) 自定义控件主题使用研究 MasterPages(转载) 我的野外拍摄
动态加载用户控件的组件!(四)
零点时刻 · 2006-04-06 · via 博客园 - 零点时刻

       我们要做没有关联cs文件的aspx叶面。其实叶面的东西并不在aspx上,而是在ascx上。Aspx所起的作用只是一个入口。对组件的引用而已,而组件就可以管理很多的ascx页面,所谓的叶面ascx叶面也应该是没有关联cs的叶面。

       所以整个系统所有的东西都是在组件里面,aspx是单纯的访问入口,ascx是纯页面的东西。Aspx入口调用组件,组件调用ascx页面以及相应客户的交互。

       只有这样才能做到每工与后台的很好的分开。

       完全可以有一个团队来开发页面(纯页面不需要任何的cs代码,全都是ascx),而有另一个团队来开发组件。最后组装成整个系统,由aspx调用组件就可以了。

       让我们来作个无代码关联的ascx叶面,叶面上有个按钮,然后写个组件加载这个ascx叶面,以及如何响应这个按钮的事件!

       (废话一下,写文章有时候不废话真是很痛苦的一件事情啊!)ascx叶面与处理叶面的后台代码分开是一件非常好的事情,不知你有没有发现一个叶面有只能与一个后台代码文件关联,不可能有两个类来关联这个叶面。而用组件来加载ascx以及相应事件,那么你就可以用同一个叶面ascx而有很多种不同的组件调用。可重用就大大的。不仅在同一个项目内重用,而是想用就用。

       实例一下:

       作个无关联cs文件的ascx页面。上面有个button. Id mybutton. 当然是run at server我们才能在组件中找到他了!ascx叶面也可以是文本文件。把后缀名改为ascx就行了。

       用我前面写的loadskin来加载吧!然后在里面处理button onclick事件就可以了。

然后在aspx中引用这个组件就行了。当然也可以在ascx中引用,都是一个效果。

       Ascx起名为a.ascx. 上面只有一个button

       也是继承SkinnedControl

namespace Region.Controls {

    /// <summary>

    /// 加载用户组件,加载不同的组件

    /// </summary>

    public class Abutton : SkinnedControl {

         Button bt;

        public Abutton() : base()

         {

base.SkinPath = "a.ascx";

         }

        /// <summary>

        /// 初始化组建摸板,进行必要的动态设置或更新

        /// </summary>

        override protected void InitializeSkin(Control skin) {

              bt = (Button)skin.FindControl("myButton");

              bt.Click +=new EventHandler(bt_Click);

              skin.DataBind();

        }

        /// <summary>

        /// 获取组件

        /// </summary>

        public override ControlCollection Controls {

              get {

                   EnsureChildControls();

                   return base.Controls;

              }

         }

         private void bt_Click(object sender, EventArgs e)

         {

              bt.Text = "心雨楼";

         }

     }

}

我么在写个同样的组件叫ebutton Abutton一样。

把事件改为bt.Text = "心雨楼!!!!!!!!";

让我们来看看无代码的aspx是什么样子的!

 

运行之后就这个样子:

分别点击之后就这样: