2017-01-10 32 views
2

我需要将从第一页选择的全球化资源语言传递到下一页。请按照图片和代码段,告诉我它有什么问题。如何将资源语言传递到其他页面

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类

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)请参考附件中的资源文件。我已经完成了这些步骤。但它不工作。请帮帮我 。 :-)

enter image description here enter image description here

回答

0

我明白我的错误。上面的代码工作正常,它也将语言传递到下一页。问题是我正在使用本地资源,我只为1页添加了resx文件。应该将resx文件添加到两个页面以获得预期的结果。

0

您可以在查询字符串传递到其他页面:

BasePage.CultureName = DropDownList1.SelectedItem.Value.ToString(); 
Response.Redirect(string.Format("Page1.aspx?culture={0}", BasePage.CultureName); 

然后在BasePage读出的值,并设置属性:

public BasePage() 
{ 
    this.CultureName = Request.QueryString["culture"]; 
} 
相关问题