更改文化信息c#
我为我的WebApp创建了3个选项习惯用法。 这个习惯用法在所有页面的按钮中都有设置。第一个选项习惯用法是set CurrentInfo 我的问题是,我可以在其他页面中设置用户在主页中设置的习惯用法 例如,对于每个页面,在页面加载中,我有以下配置:更改文化信息c#,c#,asp.net,.net,cultureinfo,C#,Asp.net,.net,Cultureinfo,我为我的WebApp创建了3个选项习惯用法。 这个习惯用法在所有页面的按钮中都有设置。第一个选项习惯用法是set CurrentInfo 我的问题是,我可以在其他页面中设置用户在主页中设置的习惯用法 例如,对于每个页面,在页面加载中,我有以下配置: Idioma.MudaCultura(CultureInfo.CurrentCulture.TwoLetterISOLanguageName.ToString()); 主页中的“我的按钮”事件。(基本上所有页面都是相同的) 我的课堂习语 publi
Idioma.MudaCultura(CultureInfo.CurrentCulture.TwoLetterISOLanguageName.ToString());
主页中的“我的按钮”事件。(基本上所有页面都是相同的)
我的课堂习语
public class Idioma
{
private string chaveRM = "";
public string ChaveRM
{
get { return chaveRM; }
set { chaveRM = value; }
}
public static string RetornaMensagem(string NomeMensagem)
{
ResourceManager resx = new ResourceManager(typeof(RM));
return resx.GetString(NomeMensagem, System.Threading.Thread.CurrentThread.CurrentCulture);
}
public static void MudaCultura(string cultura)
{
if (cultura=="pt")
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("pt", true);
}
else if(cultura=="en")
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en", true);
}
else if (cultura == "es")
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("es", true);
}
}
}
我需要的是设置CurrentInfo
,选项是用户在主页中设置的,如果与此CurrentInfo不同
例如:
主页:我当前的信息是“en-US”。
Home:我把我的习惯用语改为“es”。
其他页面:我需要得到这个新的CurrentInfo(“es”)
我明白了吗?为了让它专业化,你应该知道asp页面的层次结构, 正如您所知,任何aspx页面都是从System.Web.Pages扩展而来的,所以您必须创建一个名为BasePage的类。这个类将从page扩展而来,您将超越一些默认函数,这些函数将在文化信息和货币等方面对您有很大帮助。。并使您的aspx页面从BasePage扩展 您需要在更改区域性后重新加载页面,以使其生效 检查以下示例:
public class BasePage: Page
{
public BasePage()
{
//
// TODO: Add constructor logic here
//
}
protected override void OnPreInit(EventArgs e)
{
Page.Theme = "Default";
base.OnPreInit(e);
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
protected override void InitializeCulture()
{
string CurrencySymbol = "";
string lang = string.Empty;
HttpCookie cookie = Request.Cookies["ddl_LanguageSwitcher"];
if (cookie != null && cookie.Value != null)
{
lang = cookie.Value;
CultureInfo eg = CultureInfo.CreateSpecificCulture(lang);
IsArabic = (lang.IndexOf("ar-") >= 0);
if (IsArabic)
{
CurrencySymbol = "جم";
}
else
{
CurrencySymbol = "EGP";
}
DateTimeFormatInfo di = new DateTimeFormatInfo();
di.FullDateTimePattern = "dd/MM/yyyy HH:mm:ss";
di.ShortDatePattern = "dd/MM/yyyy";
eg.DateTimeFormat = di;
NumberFormatInfo ni = new NumberFormatInfo();
ni.CurrencySymbol = CurrencySymbol;
ni.CurrencyDecimalDigits = 2;
ni.NumberDecimalDigits = 2;
//ni.CurrencyGroupSeparator = "-";
ni.NumberGroupSeparator = "";
eg.NumberFormat = ni;
System.Threading.Thread.CurrentThread.CurrentUICulture = eg;
System.Threading.Thread.CurrentThread.CurrentCulture = eg;
_culture = Request.Cookies["ddl_LanguageSwitcher"].Value;
}
else
{
if (string.IsNullOrEmpty(lang)) lang = BL.Settings.DefaultLanguage;
CultureInfo eg = CultureInfo.CreateSpecificCulture(lang);
IsArabic = (lang.IndexOf("ar-") >= 0);
if (IsArabic)
{
CurrencySymbol = "جم";
//eg.NumberFormat.CurrencySymbol = "جم";
}
else
{
CurrencySymbol = "EGP";
//eg.NumberFormat.CurrencySymbol = "EGP";
}
DateTimeFormatInfo di = new DateTimeFormatInfo();
di.FullDateTimePattern = "dd/MM/yyyy HH:mm:ss";
di.ShortDatePattern = "dd/MM/yyyy";
eg.DateTimeFormat = di;
NumberFormatInfo ni = new NumberFormatInfo();
ni.CurrencySymbol = CurrencySymbol;
ni.CurrencyDecimalDigits = 2;
ni.NumberDecimalDigits = 2;
//ni.CurrencyGroupSeparator = "-";
ni.NumberGroupSeparator = "";
eg.NumberFormat = ni;
System.Threading.Thread.CurrentThread.CurrentUICulture = eg;
System.Threading.Thread.CurrentThread.CurrentCulture = eg;
HttpCookie cookie2 = new HttpCookie("ddl_LanguageSwitcher");
cookie2.Value = lang;
Response.SetCookie(cookie2);
_culture = "ar-EG";
}
base.InitializeCulture();
}
}
我希望这是有帮助的这不是一个完整的解决方案,但向您展示了如何从会话中设置/检索某些内容-如果您决定这样做的话
public string ChaveRM
{
get
{
if (Session["chaveRM"] != null)
return Session["chaveRM"].ToString();
return string.Empty;
}
set
{
Session["chaveRM"] = value;
}
}
以某种方式保存选定的选项。视图状态、会话等,但我如何将会话值传递给其他页面,例如?我需要将我在主页中设置的当前信息传递到任何其他页面。我看到您正在努力解决有关ASP.NET的基本概念。一个会话变量在站点的任何地方都是可见的,一旦在某个地方声明了它。是的,我在任何主题中都是begginer。很抱歉谢谢你的帮助!现在它很好用了!:)
public string ChaveRM
{
get
{
if (Session["chaveRM"] != null)
return Session["chaveRM"].ToString();
return string.Empty;
}
set
{
Session["chaveRM"] = value;
}
}