我正在尝试查找所有asp:后面的vb.net代码中的图像控件,以动态地将ImageUrl设置为相同的图像文件。这个我可以单独为每个控件做,但写10+
imgQuestion.ImageUrl = cdn.Uri.ToString & "images/question.png"
行似乎有点傻。我不需要跳过任何图像控件 - 页面上的每一个都将被更改。有没有办法在不指定每个ID的情况下识别所有ID?
这些ID并不是所有类似的名称,例如“Image1”,“Image2”,而是“PaymentNote”,“search”等,所以我无法使用类似FindControl("Image" & controlNumber)
的内容循环遍历所有数字
还有其他办法吗?我更喜欢将图像控件ID保持为有意义的东西。
答案 0 :(得分:4)
您可以从FindControl
开始递归使用Page
,并且对于每个控件检查是否为<asp:Image..
。
我自己选择的首选语言是C#,因此我无法显示VB示例。但这是一个C#示例:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ChangeImageUrls(Page);
}
private void ChangeImageUrls(Control ctrl)
{
foreach (Control subCtrl in ctrl.Controls)
{
if (subCtrl is Image)
{
((Image)subCtrl).ImageUrl = "...";
}
if (subCtrl.HasControls())
ChangeImageUrls(subCtrl);
}
}
}