当前位置:七道奇文章资讯网站建设网站编程
日期:2010-11-19 10:23:00  来源:本站整理

asp.net2.0实现语言和主题的切换[网站编程]

赞助商链接



  本文“asp.net2.0实现语言和主题的切换[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  在ASP.NET 2.0 中供应多语言转换和多款式主题转换功效,两种实现情势对比近似,所以放在一同阐明一下.

  1. Language switcher 多语言转换

  在Quick Start Tutorial 中,介绍了若何存储和利用用户挑选的语言.普通是用一个DropDownList展示支持的语言,供用户挑选,普通是放在masterpage 里面,将用户挑选的语言存储起来 这里用了ASP.NET 2.0的Profile,当然也可以存在cookie session 大概querystring里.在页面里重写InitializeCulture 办法,利用用户之前挑选的语言.因为设置语言的操作 (这里是SelectedIndexChanged事件)发生在InitializeCulture 时间背面,所以在设置操作完成后为了使的当前页面也即刻见效,需求做个重转向,以重新加载本页面,触发InitializeCulture 事件.下面使quickstart中的部份代码,注意红色部份.因为有的页面地址背面大概还存在queystring,所以个人认为红色代码部份最好用Response.Redirect(Request.Url.PathAndQuery);替换.

  protected void DropDownLanguage_SelectedIndexChanged(object sender, EventArgs e)

  {

  string SelectedLanguage = DropDownLanguage.SelectedValue.ToString();

  //Save selected user language in profile

  Profile.SetPropertyValue("PreferredCulture", SelectedLanguage);

  //Force re-initialization of the page to fire InitializeCulture()

  Response.Redirect(Request.Url.LocalPath);

  }

  protected override void InitializeCulture()

  {

  // override virtual method InitializeCulture() to check if profile contains a user language setting

  string UserCulture = Profile.GetPropertyValue("PreferredCulture").ToString();

  if ( UserCulture != "")

  {

  // there is a user language setting in the profile: switch to it

  Thread.CurrentThread.CurrentUICulture = new CultureInfo(UserCulture);

  Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);

  }

  }

  为了削减代码的反复,普通会自定义一个customer base page类,使它担当Page类,然后在自定义的页基类中重新InitializeCulture办法.最后把你的每个页面担当自你的自定义页面基类.这样你就不需求每个页面都重写InitializeCulture办法了.

  但是上面这个办法还是不是很爽,因为每增添一个页面都要去改正后置代码,来担当自定义页基类.

  我们注意到,在InitializeCulture办法中实际上只是改正了当前线程的Culture和UICulture.那么可不可以在一个全局的事件中,比方Application的某个事件,来改正这两个属性呢?很早从前我这么试过,在Application的BeginRequest事件触发时来实现InitializeCulture 的细节,近似于下面代码:

  void Application_BeginRequest(object sender, EventArgs e)

  {

  string lang = string.Empty;//default to the invariant culture

  lang = Profile.PreferredCulture;

  if (string.IsNullOrEmpty(lang))

  {

  lang = string.Empty;

  }

  Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang);

  Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang);

  }

  注意红色部份利用其他方法代替,因为在beginrequest触发阶段,profile对象还没有被asp.net成立.可以用cookies代替.


  以上是“asp.net2.0实现语言和主题的切换[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • ASP利用正则表达式提取内容
  • nginx 反向代理iis支持 ASP脚本设置
  • <b>ASP.NET安全设置防备ASPXSpy</b>
  • Ubuntu Server+Apache 运行 asp.net
  • 怎样ASP.NET MVC调用Delphi开辟的Web报表
  • 学习ASP.NET需求举行的步骤办法
  • ASP.NET脚本过滤-避免跨站脚本攻击
  • Asp WinHttp.WinHttpRequest.5.1 对象利用详解
  • ASP防XSS注入函数
  • Asp 防备CC攻击模块 (Anti-CC.asp)
  • metasploit metasploit 中文系统安装失利问题
  • Ubuntu 11下安装Metasploit Pro 4.0.0
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .