zoukankan      html  css  js  c++  java
  • .net 主题与样式

    .net 主题与样式

    理论上上来说,不同的主题中的样式表和SKIN文件的结构都应该是完全相同的。
    3)  设置你要应用主题的控件的css样式名为css中定义的样式名(比如column、gradient)
    设置你要应用主题的服务器控件的SkinId为Skin文件中定义的skinid(比如login、create等),这样在Skin中定义的控件属性会自动附加到当前的控件上(内部也是使用CSS实现的)
    4)  应用主题,有三种办法      
           全局主题:在Web.config中<system.web>中添加<pages StyleSheetTheme ="ThemeName"/>节,这样在整个应用中都会自动应用名为ThemeName 的主题
           页面主题:在ASPX文件顶部加入:<%@ Page Language="C#" StylesheetTheme=" ThemeName " %>,这样当前页面都会应用名为ThemeName 的主题,或者在ASPX_CS中加(Page_Load方法)入如下代码 Page. StyleSheetTheme = “ThemeName”; 
           角色主题:需要使用masterpage 来辅助实现 ,通过User.IsInRole(“RoleName”) 来判断用户是否属于某个角色,然后决定使用何种主题(Page. StyleSheetTheme = “ThemeName”);当然,使用这种办法还可以应用用户选择的主题
           如果你仍然感觉迷惑,请查看 Quick Start 。
    (二)  工作原理
        不同的主题和皮肤之间的不同主要是页面和页面中的控件的样式(包括字体、段落、背景、边框等等)、部分图片的不同。
        传统的完全使用CSS来表现不同的主题的方案,在处理图片和图片按钮的地方往往心有余而力不足。而在aspnet2.0里面一切都已经变得简单。
        主题和皮肤是 dotnet framework2.0内建支持的,服务器控件添加了SkinId属性,Page类也添加了Theme 和 StyleSheetTheme 属性,其目的就是优雅的支持Skin。在应用指定了主题之后,相关的页面会自动链接位于主题目录下的css文件和skin文件,css的用法跟传统的用法没有什么区别,而skin文件则以一种类似于css的方式工作,指定了SkinId的服务器控件会自动从skin文件中加载并附加匹配的属性或样式(最常用的是Image 和ImageButton的ImageUrl属性,这样做可以使页面在不同的主题下)---这是在服务器端完成的。由于skin文件在使用后是缓存在内存中的,所以效率不会有问题。
     
    (三)  Theme 和 StylesheetTheme 的区别
        基本上,本文前面所有的 StyleSheetTheme 都可以替换为 Theme ,我猜想区别是使用 Theme 时位于主题文件夹中的 样式表(CSS)文件不会被应用到主题中,但是根据我的测试,发现两种情况下生成的页面中,只有<link href=’’>这一节的位置不同,一个出现在<Title>标记前面,一个则是后面。
    (四)  优雅之处
    a)         完全Framework内建的支持、不再需要复杂的编程,甚至不再需要编程;
    b)        在vs2005中有非常友好的设计时支持,也就是说,在设计的时候你就可以看到某种主题的效果;
    c)        学习曲线很平缓,如果你熟悉CSS的话,则更加没有难度。
    -----------------
    a、页面里相同的控件使用不同的样式:在该控件后面加skinID
      b、把定义好的theme应用到整个页面:在该页的Page页签里加上属性theme=“theme名称”
      c、把定义好的theme应用到整个站点:在web.config文件system.web的配置节中加上<pages theme="theme名称">
      d、动态的更换站点的样式(主题、皮肤):在Page_PreInit事件中写代码,Page.Theme = "...";
      e、控件中应用样式的优先级:a、StyleSheetTheme引用的风格[优先级最低]
     
                               b、代码设定的控件属性(覆盖StyleSheetTheme)
     
                               c、Theme引用的风格(覆盖前面2个) [优先级最高]
      f、让某个控件不应用theme里面定义的风格:更改属性EnableTheming=false即可
     
    141 /**//// <summary>
      142 /// 获取当前的表达式对所选列进行排序
      143 /// </summary>
      144 protected void SearchSortExpression(string[] sortColumns, string sortColumn, out string sortOrder, out int sortOrderNo)
      145 {
      146 sortOrder = "";
      147 sortOrderNo = -1;
      148 for (int i = 0; i < sortColumns.Length; i++)
      149 {
      150 if (sortColumns[i].StartsWith(sortColumn))
      151 {
      152 sortOrderNo = i + 1;
      153 if (AllowMultiColumnSorting)
      154 {
      155 sortOrder = sortColumns[i].Substring(sortColumn.Length).Trim();
      156 }
      157 else
      158 {
      159 sortOrder = ((SortDirection == SortDirection.Ascending) ? "ASC" : "DESC");
      160 }
      161 }
      162 }
    164 /**//// <summary>
      165 /// 绘制升序降序的图片
      166 /// </summary>
      167 protected void DisplaySortOrderImages(string sortExpression, GridViewRow dgItem)
      168 {
      169 string[] sortColumns = sortExpression.Split(",".ToCharArray());
      170
      171 for (int i = 0; i < dgItem.Cells.Count; i++)
      172 {
      173 if (dgItem.Cells[i].Controls.Count > 0 && dgItem.Cells[i].Controls[0] is LinkButton)
      174 {
      175 string sortOrder;
      176 int sortOrderNo;
      177 string column = ((LinkButton)dgItem.Cells[i].Controls[0]).CommandArgument;
      178 SearchSortExpression(sortColumns, column, out sortOrder, out sortOrderNo);
      179 if (sortOrderNo > 0)
      180 {
      181 string sortImgLoc = (sortOrder.Equals("ASC") ? SortAscImageUrl : SortDescImageUrl);
      182
      183 if (sortImgLoc != String.Empty)
      184 {
      185 Image imgSortDirection = new Image();
      186 imgSortDirection.ImageUrl = sortImgLoc;
      187 dgItem.Cells[i].Controls.Add(imgSortDirection);
    189 }
      190 else
      191 {
      192
      193 if (AllowMultiColumnSorting)
      194 {
      195 Literal litSortSeq = new Literal();
      196 litSortSeq.Text = sortOrderNo.ToString();
      197 dgItem.Cells[i].Controls.Add(litSortSeq);
      198
      199 }
      200 }
      201 }
      202 }
      203 }
      204
      205 }
    http://www.yuechengnet.com
  • 相关阅读:
    audio元素
    获取页面中出现次数最多的三个标签以及出现次数
    vue ssr(server side rendering)
    python_2 python的编码声明
    python_1 python的编译过程
    bugs
    isPrototypeOf和 instanceof 的区别
    WebStorm 配置Git
    MongoDB 副本集搭建
    获取结算样式 getComputedStyle-currentStyle
  • 原文地址:https://www.cnblogs.com/yanwei067/p/925782.html
Copyright © 2011-2022 走看看