问题描述
情况是这样的,网站用资源文件做了多国语言,在切换的语言的时候,用了全局的PreRequestHandlerExecute或BeginRequest切换语言,但是有个小问题,就是页面的状态不能保存,例如访问的页面是http://localhost/a.apsx?id=2,切换语言之后(如英文)就是http://localhost/a.apsx?CurrentCulture=en-us,那个id=2丢失了,而且页面上控件的状态也保存不了,切换的方法是:stringstr=Request.QueryString["CurrentCulture"];if(!String.IsNullOrEmpty(str)){Thread.CurrentThread.CurrentUICulture=newCultureInfo(str);Thread.CurrentThread.CurrentCulture=CultureInfo.CreateSpecificCulture(str);}这个代码放在PreRequestHandlerExecute或BeginRequest都解决不了上面的那个状态丢失的问题,请问有没有好的方法做到保存页面的状态呢?
解决方案
解决方案二:
可以用Session,把当前的语系保存在Session中。然后加载页面时读取Session加以判断。。。
解决方案三:
引用1楼liuyun1987的回复:
可以用Session,把当前的语系保存在Session中。然后加载页面时读取Session加以判断。。。
同意楼上的,这个没问题
解决方案四:
引用楼主zephirum的帖子:
情况是这样的,网站用资源文件做了多国语言,在切换的语言的时候,用了全局的PreRequestHandlerExecute或BeginRequest切换语言,但是有个小问题,就是页面的状态不能保存,例如访问的页面是http://localhost/a.apsx?id=2,切换语言之后(如英文)就是http://localhost/a.apsx?CurrentCulture=en-us,那个id=2丢失了,而且页面上控件的状态也保存不了,切换的方法是:stringstr=Request.QueryString["CurrentCulture"];if(!String.…
切换语言的代码有问题,把代码贴出来,不是你贴出的那一块,是redirect的那部分代码!
解决方案五:
publicstringurl="";privatevoidPage_Load(objectsender,System.EventArgse){if(Request.QueryString.ToString()==""||Request.QueryString.ToString()==null){url=".."+"/"+"文件所处文件名"+"/"+System.IO.Path.GetFileName(Request.CurrentExecutionFilePath.ToString());}else{url=".."+"/"+"文文件所处文件名名"+"/"+System.IO.Path.GetFileName(Request.CurrentExecutionFilePath.ToString());url=url+"?"+Request.QueryString.ToString();}}
解决方案六:
语言切换用cookie保存比较好url还麻烦....
解决方案七:
我用cookie保存的,语言是在xml文件里的。效果如:http://oubk.com
解决方案八:
http://www.hydroponics.hk
解决方案九:
Session确实可以
解决方案十:
使用Application缓存所有的语言,在当前Session中添加一个到对应语言的引用,重新加载主框架就可以了