循环访问 ASP:Buttons



我有点新手,我对ASP:Button控件有问题。

页面上大约有 60 个按钮,典型的 XAML 如下所示:

<asp:Button class="tile" ID="Button1" runat="server" Text="Domains"/>

我需要遍历页面上的所有按钮来更改属性,我不想一一做。

我在这里和那里找到了很多建议,但没有任何效果。我的代码是:

for (int i = 1; i < 59; i++)
{ 
String butt = String.Format("Button{0}", i);
var btn = FindControl(butt);
btn.Visible = false;
}

错误是没有对象引用。BTN 为空。 我试图检查正在运行的应用程序中的元素,它说元素的 ID 是"MainContent_Button1" - 也尝试过,不起作用。我尝试过的另一件事是

foreach(var button in this.Controls.OfType<Button>())
{
button.Visible = false;
}

我得出的结论是,asp:button 是 a( 不是按钮类型的控件 b( 它的 ID 是在应用程序运行时以某种方式生成的,因此找不到 id 为 Button1 的控件。

谁能向我解释一下?我真的很想知道为什么它会有这样的行为,以及这种行为的目的到底是什么。

谢谢

编辑:我什至尝试完全删除循环并使用FindControl方法修改一个特定的按钮。也不起作用。

var btn = FindControl("Button1");
btn.Visible = false;

result: System.NullReferenceException: 'Object reference Not Set to a

object 的 instance。

您似乎正在使用母版页。在母版页上使用 FindControl 的工作方式与在普通页面上略有不同。您首先需要找到按钮所在的正确ContentPlaceHolder,并在该 ContentPlaceHolder 上使用 FindControl。

ContentPlaceHolder cph = Master.FindControl("MainContent") as ContentPlaceHolder;
for (int i = 1; i < 9; i++)
{
String butt = String.Format("Button{0}", i);
var btn = cph.FindControl(butt);
btn.Visible = false;
}

相关内容

  • 没有找到相关文章

最新更新