All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
用PHPINFO来实现PHP的配置统计过程_php资料_编程技术
SQL游标原理和使用方法_mssql学习_编程技术
在Win2003,R2上安装SQL,Server,2005(二)_[SQL,Server教程]
C#教程:C#数据类型之引用类型
WML的简单例子及编辑、测试方法_[XML教程]
Asp.net,MVC2.0初级教程-添加操作_[Asp.Net教程]
.Net中使用GDI+提高gif图片画质的代码_.net资料_编程技术
PHP程序指定目录里的指定后缀名文件为超连接_[PHP教程]
如何用.NET,Array类的Sort方法分类数值_.net资料_编程技术
PHP对GB编码动态转UTF-8几种方法评测_php资料_编程技术
Reading number is top 10 pictures
Fury xp desktop theme
美女浴室写真1
美女和狗狗2
再发两张抽象画
Summer is most suitable for young people to travel in China5
The real super beauty10
China's ambassador to Libya embassy was shock, and the glass is broken in
Absolutely shocked. National geographic 50 animal photographys8
八个盛产美女的国家1
沙漠里的美女
Download software ranking
Unix video tutorial12
Sora aoi‘s film--Lust fan wall
Unix video tutorial7
C#编程思想
网页特效实例大全
Boxer vs Yellow1
Professional killers2 data package
Tram sex maniac 2 (H) rar bag10
Proficient in JavaScript
Tram sex maniac 2 (H) rar bag19
delv published in(发表于) 2014/1/16 9:34:05 Edit(编辑)
模拟Asp.Net,Forums实现可以换皮肤的控件_[Asp.Net教程]

模拟Asp.Net,Forums实现可以换皮肤的控件_[Asp.Net教程]

模拟Asp.Net Forums实现可以换皮肤的控件_[Asp.Net教程]

为了帮助您理解《Asp.Net Forums2.0深入分析》之 Asp.Net Forums是如何实现代码分离和换皮肤的,现在我们一起来写一个代码分离带换皮肤功能的登陆页面:


第一步:新建ThemeDemo项目


第二步:添加基类SkinnedWebControl.cs
复制C#代码保存代码using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;



namespace WebUC.ThemeDemo.Controls
{


[
ParseChildren(true)
]
///


/// 换皮肤控件基类
///

public abstract class SkinnedWebControl : WebControl, INamingContainer
{


string skinFilename = null;



protected override void CreateChildControls()
{
Control skin;


// 装载用户控件文件
skin = LoadSkin();


// 初始化控件和对控件绑定
InitializeSkin(skin);


Controls.Add(skin);
}



///


/// 装载用户控件文件
///

///
protected Control LoadSkin()
{
Control skin;


// 用户控件文件默认放在Themes目录下
string skinPath = "Themes/" + SkinFilename;


// 是否定义了用户控件文件?
if (SkinFilename == null)
throw new Exception("必须定义SkinFilename属性,指定用户控件文件路径");


// 通过Page.LoadControl(defaultSkinPath)方法,从用户控件文件中获取 UserControl 对象
try
{
skin = Page.LoadControl(skinPath);
}
catch (FileNotFoundException)
{
throw new Exception("用户控件文件未找到!");
}


return skin;
}



///


/// 初始化控件,并绑定控件数据
///

///
protected abstract void InitializeSkin(Control skin);


///


/// 用户控件文件路径
///

public string SkinFilename
{
get { return skinFilename; }
set { skinFilename = value; }
}


}
}
第三步:创建Themes目录,并创建两个用户控件文件Login.ascx和Login1.ascx。布局样式不同,但是都必须包含以下控件:
TextBox Username
TextBox Password
Button LoginButton
Label Result
Login.ascx
阅读代码编辑代码运行效果复制HTML代码保存代码

登陆页的默认皮肤样式


用户名:


密 码:



登陆页的默认皮肤样式


用户名:


密 码:




Login1.ascx
阅读代码编辑代码运行效果复制HTML代码保存代码

登陆页的皮肤样式1


用户名:
密 码:

登陆页的皮肤样式1


用户名:
密 码:

第四步:创建Login控件Login.cs
复制C#代码保存代码using System;
using System.Web;
using System.Web.UI.WebControls;


namespace WebUC.ThemeDemo.Controls
{
///


/// 登陆控件,继承自SkinnedWebControl
///

public class Login : SkinnedWebControl
{
string skinFilename = "Login.ascx"; // 指定默认皮肤样式
TextBox username; // 帐号输入框
TextBox password; // 密码输入框
Button loginButton; // 登陆按钮
Label result; // 显示登陆结果


public Login()
{
if (SkinFilename == null)
SkinFilename = skinFilename;
}


///


/// 重写InitializeSkin,初始化控件和对控件进行绑定
///

///
protected override void InitializeSkin(System.Web.UI.Control skin)
{
// 查找ascx页中ID是username的textbox控件
username = (TextBox) skin.FindControl("Username");
// 绑定数据
username.Text = "demo";


// 查找ascx页中ID是password的textbox控件
password = (TextBox) skin.FindControl("Password");
// 绑定数据
password.Attributes.Add("value", "demo");


// 初始化Result控件
result = (Label) skin.FindControl("Result");


// 找到登陆按钮
loginButton = (Button) skin.FindControl("LoginButton");
loginButton.Click += new System.EventHandler(LoginButton_Click); // 绑定登陆按钮的Click事件
}


///


/// 响应登陆按钮事件
///

///
///
public void LoginButton_Click(Object sender, EventArgs e)
{
if (username.Text == "demo" && password.Text == "demo")
result.Text = "登陆成功!";
else
result.Text = "登陆失败,用户名密码不匹配!";
}


}
}
第五步:新建两个aspx页,分别把两种风格的登陆控件加入。
Login.aspx
复制ASPX代码保存代码<%@ Register TagPrefix="uc" Namespace="WebUC.ThemeDemo.Controls" Assembly="ThemeDemo" %>


换皮肤控件测试——默认皮肤






<%@ Register TagPrefix="uc" Namespace="WebUC.ThemeDemo.Controls" Assembly="ThemeDemo" %>


换皮肤控件测试——默认皮肤







Login1.aspx
复制ASPX代码保存代码<%@ Register TagPrefix="uc" Namespace="WebUC.ThemeDemo.Controls" Assembly="ThemeDemo" %>


换皮肤控件测试——另一皮肤





<%@ Register TagPrefix="uc" Namespace="WebUC.ThemeDemo.Controls" Assembly="ThemeDemo" %>


换皮肤控件测试——另一皮肤







最后,分别运行看看效果:)








源代码下载
http://webuc.net/download/ThemeDemo.rar

来源: 阿良.NET







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.