源码信息

最新源码评论

综合讨论 下载前咨询( 3 人) | 下载后讨论( 0 人 )

  • 评论者:sinal***
    sinal***(用户) 发表于:2015-07-23 19:16:51

    经验学习了

    0 个回复
  • 评论者:flyin***
    flyin***(用户) 发表于:2008-12-31 11:38:00

    没有你说的图片下载,用迅雷下载是空文件,不是忽悠人的吧?

    0 个回复
  • 评论者:xumin***
    xumin***(作者) 发表于:2008-11-19 21:44:00

    <b><font size="4">调试环境:Window xp + VS2008</font></b><br/><font size="4"></font><br/><font size="4">ASP.Net 提供了主题皮肤这个东西,其实也就是换肤啦。可是网上有很多人说这个东西鸡肋,说这个东西在 .aspx页面中使用还行,却不能在母板页(MasterPage)中使用。是的,确实不能直接在MasterPage通过一个DDL的选择来切换整个网站的主题,因为 Page.Theme 这个属性都是在PreInit(){}中设置,否则报错,而MasterPage是不执行PreInit() 。<br/>&nbsp;&nbsp;&nbsp;&nbsp;我做的这个实例希望能够帮大家解决这个问题。为是大家能更好的理解我这个源码,下面简单介绍一下。<br/>&nbsp;&nbsp;&nbsp;&nbsp;首先说下思路:我们的目的是要在MasterPage放个DropDownList,通过切换DropDownList ,(我这里没有用DropDownList,而是用Css模拟一个“DropDownList” 其中的每个项里放了一个LinkButton,每个LinkButtond的PostBackUrl的值都形如:&quot;~/ThemeTool.aspx?Theme=主题名称&quot; )来改变<b><i><font color="#ff0000">整个</font></i></b>网站的主题 ,而不是只改变当前页面,就跟Discuz ! 的那个一样,所以这个改变是全局的,但是是针对于当前线程的,即A用户改变了主题,只对A有效,对B用户没有影响,所以我们不会动到配置文件,那我们很快想到的就是session ,对的,我们要把主题的名称放到session里 ,如Session[&quot;Theme&quot;]=&quot;Blue&quot; ;这样每个页面 只要在Page_PreInit()里去获取该Session的值,并赋给该页面的Page.Theme属性,就OK了。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 当我们改变了&quot;DropDowList&quot;的选项,在我这里实际上是点击了不同的Linkbutton,也就是要改变主题的名称了,也就是要改变Session[&quot;Theme&quot;]的值了,这个“改变”的在哪里执行呢?这是很关键的,是在LinkButton_Click()里吗?不是,因为重新获取Page.Theme必须在Page_PreInit()里,</font><font size="4">而LinkButton_Click()是发生得很晚的,还在Load之后,更别说PreInit()了,所以我在这里是将它跳转到ThemeTool.aspx里处理的,处理完了再重定向到原页面,这样就达到了在原页面PreInit()之前改变了Session[&quot;Theme&quot;]的值,请放心这一过程不会使ThemeTool加载到浏览器,我们看不到的,我们只是借用了它的Page_PreInit(),用完立马就走了,哈哈!!<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好了,思路就这样,下面再介绍下三个文件:<br/>&nbsp;&nbsp;&nbsp;&nbsp;1,MasterPage.master ,在这个文件里值得说的就是我那用Css模拟的&quot;DropDownList&quot; , 该&quot;DropDownList&quot; 的每个项里都有个LinkButton ,每个LinkButtond的PostBackUrl的值都形如:&quot;~/ThemeTool.aspx?Theme=主题名称&quot;&nbsp;&nbsp;,这样每次改变&quot;DropDownList&quot; 的选项就会向ThemeTool.aspx传去了新的Theme值,再由ThemeTool.aspx处理将这个新的Theme值存入Session。<br/>&nbsp;&nbsp; 2,&nbsp;&nbsp;在App_Code文件夹里有个ThemeSkin.cs文件,里面写了两个静态方法:GetTheme(Page P) 和GetTheme(Page P),其中GetTheme(Page P)用来获取主题,这个方法在网站的每一个需要有主题的页面(我这里就是Default.aspx 和Default2.aspx l了)的Page_PreInit()里被调用,参数P 是指调用该方法的页面,是个Page类型的对象;ChangeTheme()用来切换主题,在ThemeTool.aspx.cs的Page_PreInit()里被调用。<br/>&nbsp;&nbsp; 3,&nbsp;&nbsp;根目录里的ThemeTool.aspx这个页面也是很重要的,主题的切换就是在它的Page_PreInit里搞定的,谁叫MasterPage不执行PreInit呢 ^_^&nbsp;&nbsp;。里面的代码很简单,不信你去看。<br/></font><br/><font size="4"></font><br/><font size="4"><font color="#000000">源码下载地址:<a href="http://www.51aspx.com/CV/ThemeInMasterPage" target="_blank">http://www.51aspx.com/CV/ThemeInMasterPage</a><br/></font><font color="#ff0000"></font><br/></font>

    2 个回复
    • 回复者:weiqi***
      weiqi***(用户)回复于:2009-03-09 16:09:00

      谢谢了。。。

    • 回复者:inner***
      inner***(用户)回复于:2009-09-27 02:30:00

      就是鸡肋,不好用