动态加载用户控件----以用户控件的方式达到代码分离的目的[转]
代码 方式 用户 动态 加载 控件 ---- 分离
2023-09-14 08:59:42 时间
from:http://kaliking.blog.51cto.com/58641/6738
原作: 《Asp.Net Forums2.0深入分析》之 Asp.Net Forums是如何实现代码分离和换皮肤的 http://webuc.net/dotey/archive/2004/05/28/834.aspx 模拟Asp.Net Forums实现可以换皮肤的控件 http://webuc.net/dotey/archive/2004/05/28/835.aspx 本人以VB代码实践了一次... 首先是基类,class1 Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.IO Namespace WebUC
summary
换皮肤控件基类
/summary
ParseChildren(True) _
Public Class Class1: Inherits WebControl
Implements INamingContainer Dim skinFn As String = Nothing Public Sub New()
If (SkinFilename = Nothing) Then
SkinFilename = "wc1.ascx"
Else
SkinFilename = skinFn
End If
End Sub Protected Overrides Sub CreateChildControls() Dim skin As Control 装载用户控件文件
skin = LoadSkin() 初始化控件和对控件绑定
InitializeSkin(skin) Controls.Add(skin)
End Sub summary
装载用户控件文件
/summary
returns /returns
Protected Function LoadSkin() As Control
Dim skin As Control 用户控件文件默认放在Themes目录下
Dim skinPath As String = SkinFilename 是否定义了用户控件文件?
If SkinFilename = Nothing Then Throw New Exception("必须定义SkinFilename属性,指定用户控件文件路径") 通过Page.LoadControl(defaultSkinPath)方法,从用户控件文件中获取 UserControl 对象
Try
skin = Page.LoadControl(skinPath)
Catch ex As Exception
Throw New Exception("用户控件文件未找到!")
End Try Return skin
End Function summary
初始化控件,并绑定控件数据
/summary
param name="skin" /param
Protected Overridable Sub InitializeSkin(ByVal skin As Control) End Sub summary
用户控件文件路径
/summary
Public Property SkinFilename() As String
Get
Return skinFn
End Get
Set(ByVal value As String)
skinFn = Value
End Set
End Property End Class
End Namespace 然后是个用户控件 wc1.ascx: %@ Control Language="VB" AutoEventWireup="false" CodeFile="wc1.ascx.vb" Inherits="wc1" %
asp:TextBox ID="TextBox1" runat="server" wc1 /asp:TextBox
asp:Label ID="Label1" runat="server" Text="Label" /asp:Label
asp:CheckBox ID="CheckBox1" runat="server" /
最后是创建个页面文件,并根据SkinFilename属性加载用户控件: page1.aspx %@ Page Language="VB" AutoEventWireup="false" CodeFile="page1.aspx.vb" Inherits="page1" %
%@ Register TagPrefix="uc" Namespace="WebUC"%
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml"
head runat="server"
title Untitled Page /title
/head
body
form id="form1" runat="server"
div
uc:Class1 runat="server" SkinFilename="wc1.ascx" /
/div
/form
/body
/html 以上功能,一定程度上可以取代.net 2.0 的master母页,甚至可以说,更加简便 欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2009/10/14/1583228.html
Winform控件优化之自定义控件的本质【从圆角控件看自定义的本质,Region区域无法反锯齿的问题】 自定义控件的本质只有两点:重绘控件Region区域(圆角、多边形、图片等),这是整个控件的真实范围;重绘图形,在原有Region范围内,重绘不同的图形(圆角、多边形、图片等)作为背景......
WPF通过代码动态的加载样式 原文:WPF通过代码动态的加载样式 tabitem.SetResourceReference(TabItem.StyleProperty, mainTabItemStyle tabitem.Content = new Goods.GoodsMain();
用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机 原文:用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机 在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打印或存档。
背景和问题 在app后sdk开发过程中,如果有遇到延时任务的时候,往往需要添加一个通用的loading控件用来展示给用户,一来为了提示用户当前有耗时的操作,二来降低用户的等待感提升用户体验。
COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上) 声明:本文代码基于CodeProject的文章《A Complete ActiveX Web Control Tutorial》修改而来,因此同样遵循Code Project Open License (CPOL)。
原作: 《Asp.Net Forums2.0深入分析》之 Asp.Net Forums是如何实现代码分离和换皮肤的 http://webuc.net/dotey/archive/2004/05/28/834.aspx 模拟Asp.Net Forums实现可以换皮肤的控件 http://webuc.net/dotey/archive/2004/05/28/835.aspx 本人以VB代码实践了一次... 首先是基类,class1 Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.IO Namespace WebUC
summary
换皮肤控件基类
/summary
ParseChildren(True) _
Public Class Class1: Inherits WebControl
Implements INamingContainer Dim skinFn As String = Nothing Public Sub New()
If (SkinFilename = Nothing) Then
SkinFilename = "wc1.ascx"
Else
SkinFilename = skinFn
End If
End Sub Protected Overrides Sub CreateChildControls() Dim skin As Control 装载用户控件文件
skin = LoadSkin() 初始化控件和对控件绑定
InitializeSkin(skin) Controls.Add(skin)
End Sub summary
装载用户控件文件
/summary
returns /returns
Protected Function LoadSkin() As Control
Dim skin As Control 用户控件文件默认放在Themes目录下
Dim skinPath As String = SkinFilename 是否定义了用户控件文件?
If SkinFilename = Nothing Then Throw New Exception("必须定义SkinFilename属性,指定用户控件文件路径") 通过Page.LoadControl(defaultSkinPath)方法,从用户控件文件中获取 UserControl 对象
Try
skin = Page.LoadControl(skinPath)
Catch ex As Exception
Throw New Exception("用户控件文件未找到!")
End Try Return skin
End Function summary
初始化控件,并绑定控件数据
/summary
param name="skin" /param
Protected Overridable Sub InitializeSkin(ByVal skin As Control) End Sub summary
用户控件文件路径
/summary
Public Property SkinFilename() As String
Get
Return skinFn
End Get
Set(ByVal value As String)
skinFn = Value
End Set
End Property End Class
End Namespace 然后是个用户控件 wc1.ascx: %@ Control Language="VB" AutoEventWireup="false" CodeFile="wc1.ascx.vb" Inherits="wc1" %
asp:TextBox ID="TextBox1" runat="server" wc1 /asp:TextBox
asp:Label ID="Label1" runat="server" Text="Label" /asp:Label
asp:CheckBox ID="CheckBox1" runat="server" /
最后是创建个页面文件,并根据SkinFilename属性加载用户控件: page1.aspx %@ Page Language="VB" AutoEventWireup="false" CodeFile="page1.aspx.vb" Inherits="page1" %
%@ Register TagPrefix="uc" Namespace="WebUC"%
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml"
head runat="server"
title Untitled Page /title
/head
body
form id="form1" runat="server"
div
uc:Class1 runat="server" SkinFilename="wc1.ascx" /
/div
/form
/body
/html 以上功能,一定程度上可以取代.net 2.0 的master母页,甚至可以说,更加简便 欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2009/10/14/1583228.html
Winform控件优化之自定义控件的本质【从圆角控件看自定义的本质,Region区域无法反锯齿的问题】 自定义控件的本质只有两点:重绘控件Region区域(圆角、多边形、图片等),这是整个控件的真实范围;重绘图形,在原有Region范围内,重绘不同的图形(圆角、多边形、图片等)作为背景......
WPF通过代码动态的加载样式 原文:WPF通过代码动态的加载样式 tabitem.SetResourceReference(TabItem.StyleProperty, mainTabItemStyle tabitem.Content = new Goods.GoodsMain();
用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机 原文:用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机 在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打印或存档。
背景和问题 在app后sdk开发过程中,如果有遇到延时任务的时候,往往需要添加一个通用的loading控件用来展示给用户,一来为了提示用户当前有耗时的操作,二来降低用户的等待感提升用户体验。
COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上) 声明:本文代码基于CodeProject的文章《A Complete ActiveX Web Control Tutorial》修改而来,因此同样遵循Code Project Open License (CPOL)。
相关文章
- 如何实现Windows Phone代码与Unity相互通信(插件方式)
- springboot学习章节代码-spring基础
- 重学c#系列——c# 托管和非托管资源与代码相关(四)
- JavaFX控制器:设置按钮点击事件代码示例
- Visual Studio 2008项目中WinForm窗体图标显示为类图标,只能打开代码而无法打开视图问题解决
- 一行代码将SAP CDS view数据以ALV的方式输出
- 如何用ABAP代码的方式弹出SPRO里的customizing activity
- 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
- 编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值
- 100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战
- 【无人机】用于无线充电传感器网络可持续充电的总线网络辅助无人机调度(Matlab代码实现)
- 我用python代码把舞蹈区的精华下载下来慢慢欣赏~
- 一种自适应模拟退火粒子群优化算法-附代码
- SpringBoot三种方式配置Alibaba Druid用于监控或者查看SQL状况:yml或properties配置;Java bean代码配置;注解配置 yml和properties的在线相互转换
- 【CSS】更改用户界面样式 ② ( 取消轮廓线 outline | 取消轮廓线设置方式 outline: 0; | 代码示例 )
- 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )
- .Net调用非托管代码数据类型不一致的问题
- 003-Python3-基础语法-运行方式、代码基础要求、运算符[算数运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符]、运算符优先级
- 0404-服务注册与发现-客户端负载均衡-两种自定义方式-Ribbon通过代码自定义配置、使用配置文件自定义Ribbon Client
- ChatGPT——请生成rundll32.exe 可以运行的打开计算器程序的dll C++代码,并给出编译代码和运行方式
- RK3399平台开发系列讲解(内核修改记录篇)7.6、RK DRM下屏幕显示分辨率的EDID 方式修改及代码流程
- js工具代码封装(超长)1/3
- Web前端 | HTML嵌入JS代码的三种方式
- 【设计原则】依赖倒置原则--高层代码和底层代码到底谁该依赖谁?