循环浏览页面上的所有按钮并指定新的文本值

use*_*842 0 c# asp.net foreach

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

foreach (Button s in Page.Controls)
{
    if (s.Text =="search")
    {
       s.Text = "buscar";
    }
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*ans 6

您可能希望考虑使用资源文件,而不是循环控制.例如,在资源文件到位的情况下,您可以定义一个按钮,如下所示:

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

我们的想法是,您希望支持的每种语言和文化都有一个resx文件,每个文件将包含相同的标签,例如"btnSave"但文本值不同.

我强烈建议您查看资源文件,因为从长远来看,它们将为您提供更多灵活性.


Cla*_*edi 5

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

foreach (Button s in Page.Controls.OfType<Button>())
Run Code Online (Sandbox Code Playgroud)

另一方面,我完全同意@Jason Evans的说法,这不是管理字符串本地化的正确方法.(我有点想念你在我第一次阅读时想要做的事情的核心)