0

我有一个页面,页面上有几个按钮,它们分配了相同的文本,我正在根据用户的浏览器文化将页面本地化为不同的语言。我希望以编程方式循环浏览它们并即时重新标记它们。这是我尝试过的,它会导致asp页面错误:

foreach (Button s in Page.Controls)
{
    if (s.Text =="search")
    {
       s.Text = "buscar";
    }
}
4

3 回答 3

6

您可能要考虑使用资源文件,而不是循环访问控件。例如,有了资源文件,您可以定义一个按钮,如下所示:

<asp:Button ID="btnSave" runat="server" meta:resourcekey="btnSave" Text="English Button" />

这个想法是,您将拥有一个您希望支持的每种语言和文化的 resx 文件,并且每个文件将包含相同的标签,例如“btnSave”,但具有不同的文本值。

我强烈建议您查看资源文件,因为从长远来看,它们对您来说会更加灵活。

于 2013-08-28T21:33:38.910 回答
5

并非所有页面控件都是Button. 试试这个

foreach (Button s in Page.Controls.OfType<Button>())

另一方面,我完全同意@Jason Evans 的观点,即这不是管理字符串本地化的正确方法。(在我第一次阅读时,我有点错过了你试图做的事情的核心)

于 2013-08-28T21:33:11.440 回答
1

做这个

foreach(Control c in Page.Controls)
{
    Button b = c as Button;
    if(b!=null)
    {
       //do stuff
    }
}
于 2013-08-28T21:37:40.280 回答