最近一段时间做国际化,平常页面调用App_LocalResources都很正常,全部弄完后,剩下ajax调用的.ashx文件未正常显示,今天调了 半天,原来是因为平常页面都继承了basepage这个页面,都调用了SetCulture()的方法,而.ashx不能继承此类,所以只能自己手动调 用,方法如下:
       
        #region lang

        /// <summary>
        /// 设置国际化语言
        /// </summary>
        private void SetCulture()
        {
            try
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(Lang);
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Lang);
            }
            catch (Exception ex)
            {
                WriteString(ex.Message);
                return;
            }
        }

        /// <summary>
        /// 国际化标签
        /// </summary>
        /// <returns></returns>
        public string Lang
        {
            get
            {
                string lang = OConst.Comm.LANG_DEFAULT;

                if (OCookie.Site.LangID < 1)
                {
                    return lang;
                }

                cLanguage langET = BLL.Language.GetByID(OCookie.Site.LangID);

                if (langET != null && !string.IsNullOrEmpty(langET.Lang))
                {
                    lang = langET.Lang;
                }

                return lang;
            }
        }

        #endregion

        public void ProcessRequest(HttpContext context)
        {
            //设置语言
            SetCulture();
            switch (action)
            {
                case "Test":
                    Test();
                    break;
            }
        }

       private static void Test()
        {
           //因为调用的是App_GlobalResources里的资源文件,所以下面的文件名为ajax.resx,里面有个Key值为Test
           //GlobalResources下的文件都已经自动强类型了,App_LocalResources下的好像不可以,刚弄,具体也不是很清楚
            WriteString(Resources.ajax.Test);
        }

搞定。。有好的建议可以共同探讨探讨。。。
posted on 2011-10-28 22:48  ChenChuan  阅读(639)  评论(0)    收藏  举报