个人感觉Theme主题没多大用处
1.首先里面的skin文件支持的是服务器控件的外观设置,可一般开发人员或者美工设计的界面都是html+css的,并没有几个人对服务器控件的那些外观属性很熟悉,而且那些控件那么多,每新出一个新的服务器控件都要去熟悉它的那些外观属性吗。
2.在App_Themes里定义的css文件虽然通过<%@ Page Language="C#" Theme="diary"%>
可以自动加载到aspx页面,可是在设计时并不能看到其效果,需要运行后才能看出来。
通过以上两点个人感觉Theme主题并无多大用处,大家觉得呢?
另外再问一个问题,使用了Master母版页的页面如何链接.css文件,如果把所有页面都写到Master母版页里怕每个.css文件会有冲突,如果用Theme来加载又不能在设计时看到效果,另外在程序里加载也是不能在设计时看到效果。
1.首先里面的skin文件支持的是服务器控件的外观设置,可一般开发人员或者美工设计的界面都是html+css的,并没有几个人对服务器控件的那些外观属性很熟悉,而且那些控件那么多,每新出一个新的服务器控件都要去熟悉它的那些外观属性吗。
2.在App_Themes里定义的css文件虽然通过<%@ Page Language="C#" Theme="diary"%>
可以自动加载到aspx页面,可是在设计时并不能看到其效果,需要运行后才能看出来。
通过以上两点个人感觉Theme主题并无多大用处,大家觉得呢?
另外再问一个问题,使用了Master母版页的页面如何链接.css文件,如果把所有页面都写到Master母版页里怕每个.css文件会有冲突,如果用Theme来加载又不能在设计时看到效果,另外在程序里加载也是不能在设计时看到效果。
解决方案 »
- UI层是否应该参与业务层的东西
- 求 asp.net web 项目打包 含iis及sql 数据库(iis及数据库检测,如没有自动安装) 实例
- 为什么con.Open();了 还要再写一个 open()方法呢?
- 在asp.net2.0中,cs编译成DLL问题,急~~~~~~~~~
- 菜鸟 提问
- asp.net在项目目录下创建txt
- 未能找到路径“C:\Documents and Settings\Administrator\桌面\bxshw\newproduct\ 怎么回事哦
- 关于asp.net form验证的问题
- Label???
- 怎样在客户端执行动态的javascript脚本?
- 小弟请教一个关于用户登陆的缓存问题
- flash到图片转化问题
我们程序员的精力都有限呀。这样能用了,没什么时间去研究服务器控件了。
=======
服务器控件最终转换成 html 元素,浏览器根本不知道 runat=server 的存在可一般开发人员或者美工设计的界面都是html+css的,并没有几个人对服务器控件的那些外观属性很熟悉,
=======
服务器控件可直接引用 css (Control.CssClass 属性),对于简单控件,你依然可以使用 #id 或者直接命名html元素如 p td div 的样式,来进行“样式层叠”当然,因为服务器控件实现机制,复合控件,如 TreeView DataGrid 等通常只有使用前者
而且那些控件那么多,每新出一个新的服务器控件都要去熟悉它的那些外观属性吗。
=======
这是一个“举一反三”“一通百通”的过程因为,所有的服务器内置公开支持的对应 CSS 属性,接口都是统一的,实现方式是一致的!
至于熟悉到何种程度,由你角色决定asp/php/.... 你同样需要熟悉美工也需要熟悉 HTML CSS ,否则设计出来的效果,只能当“海报”用,不能当“网页”当两者需要整合的时候, asp/php/.... 通常更加难以维护,因为他们纯是【内联】方式的代码,静态 html/css/js 与动态输出部分无法分离开发人员不能等美工将 html 设计好之后再导入,然后编码,相反,asp.net,力求在编码开发阶段,为开发人员提供客户端UI(html/css/js)层次呈现无关的【服务器控件】并包装相关的对应的 html属性和css 属性,提供插入 js 的接口,如 RegisterClientScriptXXXXX 方法,当然,这并没有真的达到早期宣扬的 “代码”【真正】分离的效果,虽然,你是可以直接使用大量的服务器 css 相应属性,比如 GridView/DataGrid/.... 设计器提供了多个预定义的样式,
这样你是真的【分离】了,但是最终呈现出来的效果,几乎是“惨不忍睹”,
要么效果不佳,丑陋,
要么是布局不够精确(记得 VS 03提供那个 gridlayout 迈?纯粹是鸡肋,以为通过拖拽可以“画”出 web 页面 ...),web 上面差一橡树都不行
要么是大量的冗余代码,比如直接使用 GridView 内置样式模版,会给你生成大量的冗余 css,
全部是 inline (内联)方式的可喜的是, asp.net 3.5 (VS 2008) 对此进行了改善,大量象 CSS 靠拢,可以完全分离出 css,大量减少 内联方式 的 css, 比如新提供的 ListView
因此,不尽完美,革命尚未成功,但是前途是光明的 :),需要一个渐进的过程,2.0 提供的 Theme/Shin 相对 1.x 已经是一个很大进步,服务器端属性与Theme/Shin 一个最大的邮电就是:便于编程访问/修改,便于编程动态的改变相关的属性!对于 theme/skin 同时提供了成批设置同类服务器控件的优势
你说,那么我给 TextBox.CssClass 直接定义就行了啊,没错,对于简单控件是如此,因为他们的 css 元素单一,
但是,对于复合控件就不一样了, 比如 GridView, 有 header footer item pager 等多个局部样式需要定义,你依然可以单独的设置每个的 css,
但是我通过为 GridView 定义一个 skin,将其需要的 css 统一组合在一起,直接一个GridView.SkinID 修改就行了,岂不更好?
可能一下子适应不了这个改变
=======
需要一定的工作量,但是有经验的设计师一点都不累
一项很愉快的工作 :)
还不如直接把设计好的表格或者div拷到模版里
=======
是啊,模版列,你完全可以这么干,比如 Repeater ,完全依赖你自己的设计特使 asp.net 3.5 提供的ListView 更加自由
另外用主题最大的一个缺点就是不能在设计时看到效果,这是很糟糕的不是吗,包括在主题里添加的.css文件也是看不到效果的=======这是个问题,目前我没有对 VS 2008 关注是否解决此问题,需要 checkout ....事实上,我们基本忽略了此问题,因为从一定意义上,我从不将 VS 当作一个 Web 设计器,他是用来 Coding 的,我几乎从不拖拽,拉伸来完成任何我可以直接快速编码实现的工作并且,几乎所有的 Web 设计器并不全完全兼容浏览器呈现效果,包括 DW,假如你很在意,应该考虑使用 Microsoft Web Expression 来进行 UI 可视化设计,
与 IE ASP.NET VS 兼容性很好并且 VS 2008 在 web 设计器上做了很大的改进,比如 DW 和 FP 提供的经典的 代码/视图 分隔
<asp:Button SkinID="MyButtonSkin" runat="server" onmouseover="this.style.background='url(image/button2.gif)'" onmouseout="this.style.background='url(image/button.gif)'" />
// .aspx
<asp:Button SkinID="MyButtonSkin" runat="server" />
假如你有中需求,似乎纯标准 CSS 就办不到了吧?看到了吧,其实很多“技巧”有待我们去发掘,theme 为我们提供了额外的选择,但没有强迫你去“消费”它有选择,总比没有好,是吧?虽然,有不尽人意的地方 ....你喜欢,就用你自己风格 :)