代码改变世界

Subtext--为skin准备相关文件加载

  Clingingboy  阅读(709)  评论(0编辑  收藏  举报
      定制skin模板中的用户控件时,为了更好的管理样式,我们一般推荐定义样式表,然后在相应的地方添加样式,我们最好也不摇在用户控件中直接引入样式表,这样很容易出错。所以Subtext提供了一个配置文件Skins.config,其为一个定制的xml文件,专为skin设置,你可以为每套模板有选择性的添加样式文件,如下

<?xml version="1.0"?>
<SkinTemplates xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    
<!--
        Note that multiple skins may share the same template folder.
        Each template folder by 
default should have a style.css file. 
        This file does not need to be configured 
in this section.
        
        For skins that share a template folder, the skins should be 
        distinguished by their stylesheet.  Note that when specifying 
        a StyleSheet
="" attribute, this style is rendered AFTER "style.css" 
        allowing the skin to 
override template specific styles.
    
-->
    
<Skins>
        
<SkinTemplate Name="AnotherEon001" TemplateFolder="AnotherEon001">
            
<Styles>
                
<Style href="~/skins/_System/csharp.css" />
                
<Style href="~/skins/_System/commonstyle.css" />
                
<Style href="~/skins/_System/commonlayout.css" />
                
<Style href="print.css" media="print" />
            
</Styles>
        
</SkinTemplate>

        
<SkinTemplate Name="BlueBook" TemplateFolder="RedBook" StyleSheet="Blue.css">
            
<Scripts>
                
<Script Src="~/Admin/Resources/Scripts/niceForms.js" />
            
</Scripts>
            
<Styles>
                
<Style href="~/skins/_System/csharp.css" />
                
<Style href="~/skins/_System/commonstyle.css" />
                
<Style href="~/skins/_System/commonlayout.css" />
                
<Style href="niceforms-default.css" />
                
<Style href="print.css" media="print" />
            
</Styles>
        
</SkinTemplate>
</Skins>
</SkinTemplates>

这里包含几个元素呢?

一.SkinTemplates为根路径
二.Skins表示模板集合
三.SkinTemplate表示一个模板的内容包含Styles和Scripts
四.Styles表示要加载的样式文件集合
五.Scripts表示要加载的脚本文件集合

页面会根据模板到这个配置文件里来读取并加载相关文件。

xml定义好了,你该如何做呢.利用xml序列化的功能.你首先得为上面的几个对象定义实体类



注意元数据属性,是为必须的,根据元数据熟悉属性再看看那个xml文件,意思是一一对应的。

接着便是SkinTemplates的真正反序列化的过程了,接着呢你就可以来个迭代,来加载相关skin文件了。
当然别忘了定义一个集合skins
        [XmlArray("Skins")]
        
public List<SkinTemplate> Templates
        
{
            
get {return this._skinTemplates;}
            
set {this._skinTemplates = value;}
        }
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示