首页  ·  知识 ·  云计算
RainsoftSkinLibraryforASP.NET1.1(IncSourceCode)
佚名  http://www.rainsts.net/    编辑:dezai  图片来源:网络
如果你有以下问题,建议你下载这个东东。1. 希望网站能像Blog网站那样支持更换模板(Skin)。2. 让开发人员和美工能各自独立工作,互不干扰。3.
如果你有以下问题,建议你下载这个东东。

1. 希望网站能像Blog网站那样支持更换模板(Skin)。
2. 让开发人员和美工能各自独立工作,互不干扰。
3. 能动态增减页面的功能模块,而无需重新修改编译源代码。

等等...

=========================
Rainsoft Skin Library for ASP.NET 1.1
=========================

原理

原理很简单,通过HttpModule拦截页面访问请求,然后根据相关配置重写路径,使其跳转到Skin页面。
通过动态载入自定义控件来调整页面功能。

使用

1. 在Web.config文件中添加HttpModule配置。
 
 
 

2. 创建自定义控件,添加控件和功能代码,无需进行美化工作。

3. 在页面添加PlaceHolder控件用来载入自定义控件。

4. 在页面Page_Load方法中添加LoadAscxControl或者LoadAscxFromXml方法载入自定义控件。

问题

1. 模板(Skin)文件放在什么地方?

所有模板文件必须存放于 Skins 下的一个子目录中,子目录名就是SkinName,且模板文件路径和原文件相对应。

2. 如何制作模板文件?

将原文件(.aspx,不包含.cs)拷贝到模板目录中,并将第一行中的 Codebehind="***.aspx.cs" 删除,然后美工就可以编辑美化了。
注意不要修改控件名称。

3. skin.xml 是做什么用的?

我们可以通过配置文件载入自定义控件。这样我们只要在Page_Load中调用一次LoadAscxFromXml就可以了。
skin.xml中"*"表示每个页面都要用到。

4. 如何指定缺省模板?

在Global.cs中添加如下代码
protected void Application_Start(Object sender, EventArgs e)
{
  Rainsoft.Web.Skin.DefaultSkinName = "a";
}

5. 如何为不同的Session或页面指定不同的模板?

可以在Global.cs中使用Skin.OnSkin事件。
protected void Application_Start(Object sender, EventArgs e)
{
  Rainsoft.Web.Skin.OnSkin += new Rainsoft.Web.OnSkinHandler(Skin_OnSkin);
}

private void Skin_OnSkin(HttpContext context, out string skinName)
{
  string page = context.Request.FilePath.ToLower();
  if (page.EndsWith("default.aspx"))
    skinName = "b";
  else if (page.EndsWith("login.aspx"))
    skinName = "a";
  else
    skinName = null;
}

6. 如何在不同的模板间增减功能?

将模板中不想加载的自定义控件对应的PlaceHolder标记删除就可以了。
可以参考Skins\b\Default.aspx和Skins\a\Default.aspx的区别。

7. 为什么模板页面的图片无法显示?

由于页面路径的重写,导致IE无法正确获取图片的路径,因此模板文件在发布的时候需要使用全路径或者使用<%=Rainsoft.Web.Skin.SkinPath%>来动态补全路径。可以参考Demo中的模板文件。另外还有<%=Rainsoft.Web.Skin.SitePath%>可供使用。

8. 这个Skin框架会破坏ASP.NET原有功能吗?

不会,使用了这个框架,身份安全验证、页面(自定义控件)缓存等功能都能正常使用。
注:页面和自定义控件的缓存指令也需要写入模板文件。具体参考Demo。

9. Skin中还包含其他什么功能?

SetDefaultButton 设置缺省按钮。这样我们在输入框中按回车键就可以指定触发哪个按钮的Click事件啦。
private void Page_Load(object sender, System.EventArgs e)
{
  Skin.SetDefaultButton(txtPassport, btnLogin.ClientID);
  Skin.SetDefaultButton(txtPassword, btnLogin.ClientID);
}


SmartNavigationEx 替代SmartNavigation的一个好东西,不会再有因为SmartNavigation的缺陷造成很多麻烦了。

NoCache 禁用页面Cache。

升级

2005-07-07
--------------------
1. 修正几个Bug。
2. 将Skin.Name改名为Skin.DefaultSkinName。
3. 并添加了其他几个属性,如Skin.CurrentSkinName。
4. 取消Skin.ChangeSkin方法。

2005-07-06
--------------------
发布

点击下载 本文作者:佚名 来源:http://www.rainsts.net/
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读