如何将资源语言传递到不同的页面
How to pass the resource language to a different page
我需要将从第一页选择的全球化资源语言传递到下一页。请按照图像和代码段告诉我它有什么问题。
1) 我使用以下代码从下拉列表中获取语言
protected void Button1_Click(object sender, EventArgs e)
{
BasePage.CultureName = DropDownList1.SelectedItem.Value.ToString();
Response.Redirect("Page1.aspx");
}
2) 传递给这个函数
public class BasePage : System.Web.UI.Page
{
public BasePage()
{
}
static string cultureName;
public static string CultureName
{
return cultureName;
}
set
{
cultureName = value;
}
}
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(cultureName);
base.InitializeCulture();
}
3) 传递的变量是通过使用 BasePage class
继承从这里读取的
public partial class Page1 : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
4) ASPX 文件
<pre>
<%@ Page Language="C#" AutoEventWireup="true"CodeBehind="Page1.aspx.cs"
meta:resourcekey="PageResource1" Inherits="Globalization.Page1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label2" runat="server"
meta:resourcekey="Label2Resource1" />
</div>
<asp:Button ID="Button1" runat="server"
meta:resourcekey="ButtonResource1"/>
</form>
</body>
</html>
</pre>
5) 资源文件请参考附件图片。我已经完成了这些步骤。但它不起作用。请帮我 。 :-)
您可以在查询字符串中将其传递给其他页面:
BasePage.CultureName = DropDownList1.SelectedItem.Value.ToString();
Response.Redirect(string.Format("Page1.aspx?culture={0}", BasePage.CultureName);
然后在BasePage
中读取值并设置属性:
public BasePage()
{
this.CultureName = Request.QueryString["culture"];
}
我明白我的错误了。上面的代码工作正常,它也将语言传递到下一页。问题是我使用的是本地资源,我只为 1 页添加了 resx 文件。应将 resx 文件添加到两个页面以获得预期结果。
我需要将从第一页选择的全球化资源语言传递到下一页。请按照图像和代码段告诉我它有什么问题。
1) 我使用以下代码从下拉列表中获取语言
protected void Button1_Click(object sender, EventArgs e)
{
BasePage.CultureName = DropDownList1.SelectedItem.Value.ToString();
Response.Redirect("Page1.aspx");
}
2) 传递给这个函数
public class BasePage : System.Web.UI.Page
{
public BasePage()
{
}
static string cultureName;
public static string CultureName
{
return cultureName;
}
set
{
cultureName = value;
}
}
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(cultureName);
base.InitializeCulture();
}
3) 传递的变量是通过使用 BasePage class
继承从这里读取的public partial class Page1 : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
4) ASPX 文件
<pre>
<%@ Page Language="C#" AutoEventWireup="true"CodeBehind="Page1.aspx.cs"
meta:resourcekey="PageResource1" Inherits="Globalization.Page1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label2" runat="server"
meta:resourcekey="Label2Resource1" />
</div>
<asp:Button ID="Button1" runat="server"
meta:resourcekey="ButtonResource1"/>
</form>
</body>
</html>
</pre>
5) 资源文件请参考附件图片。我已经完成了这些步骤。但它不起作用。请帮我 。 :-)
您可以在查询字符串中将其传递给其他页面:
BasePage.CultureName = DropDownList1.SelectedItem.Value.ToString();
Response.Redirect(string.Format("Page1.aspx?culture={0}", BasePage.CultureName);
然后在BasePage
中读取值并设置属性:
public BasePage()
{
this.CultureName = Request.QueryString["culture"];
}
我明白我的错误了。上面的代码工作正常,它也将语言传递到下一页。问题是我使用的是本地资源,我只为 1 页添加了 resx 文件。应将 resx 文件添加到两个页面以获得预期结果。