项目(多国技术) 总结

一开始是做皮肤,怎样建皮肤?
我们可以在web.config文件中的 <system.web/>加入一行:<pages  theme="traditional"/>
这句话意思是所有页面默认主题为:traditional。
然后新建APP_Themes文件夹,并在下面建立各种主题,如simple、traditional、english。
然后我们新添一个master文件,在该文件中,我们使用class即样式表、与skinid来配置显示效果。
而class与skinid都可以分别在主题的皮肤文件与样式文件中统一设置,在后台编码中我们只需改变Page.Theme属性即可。值得注意的一点是Page.Theme属性不可在page_load事件中设置,必须在page_preinit事件中或之前设置。为此,我们新建一个pagebase类,其继承System.Web.UI.Page类,里面实现一些切换主题与culture属性值。然后我们将来新建的页面统一继承pagebase类,达到统一修改主题与文化属性。
还有一点需要注意的是:在设置文化属性值时与设置主题属性一样,必须在preinit事件中执行。
具体代码如下:
    protected void Page_PreInit(object sender, EventArgs e)
    {
        
if (Session["theme"]!=null)
        {
            Page.Theme 
= Session["theme"].ToString();            
        }
        Thread.CurrentThread.CurrentCulture 
= PageCulture;
        Thread.CurrentThread.CurrentUICulture 
= PageCulture;
    }


现在我们已经达到了切换主题与文化的目的,但在运行的过程中,还有一点小问题。Smile
就是比如:我新建了一个default页面,让他自动产生三个资源文件,文件名为:
default.aspx.zh-CN.resx
default.aspx.zh-TW.resx
default.aspx.en-US.resx
设置好后,运行,发现并不能切换文字效果,比如页面中有个label,其设置meta:resourcekey="Label1Resource1",当我切换文化时,并不能获取相应的资源文件。

而当我把default.aspx.zh-CN.resx改为default.aspx.resx时,运行正常!SurpriseIdea
很奇怪。。。

现在还有一个问题没有解决。
就是我这里存储的theme与culture都是在session中,而我想把它放入profile中,达到个性化目的,
我一开始是这样做的,在web.config文件中加入:
   <anonymousIdentification enabled="true" />
    
<profile defaultProvider="ITsolution">
      
<providers >
        
<add name="ITsolution" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="itsolutionconnection" applicationName="itsludis"/>
      
</providers>
      
<properties>
        
<clear/>
        
<add name="theme" allowAnonymous="true" defaultValue="simple"/>
        
<add name="culture" allowAnonymous="true" type="System.String"/>
      
</properties>

然后在master.cs中设置profile属性值。而下一步是我必须把profile里面设置的theme与culture值取出来,但在pagebase类中并没有profile这个实例对象,那该怎么取呢?高手帮帮忙!
posted on 2006-04-05 20:58  Sunny  阅读(285)  评论(1编辑  收藏  举报