0

我试图在后面的 vb.net 代码中找到所有 asp:Image 控件,以将 ImageUrl 动态设置为相同的图像文件。我可以为每个控件单独执行此操作,但是编写 10 多 imgQuestion.ImageUrl = cdn.Uri.ToString & "images/question.png"行似乎有点傻。我不需要跳过任何图像控件——页面上的每一个都将被更改。有没有办法在不指定每个 ID 的情况下识别所有这些?

ID 的名称并非全都类似,例如“Image1”、“Image2”,而是“PaymentNote”、“search”等,因此我无法使用类似的名称遍历所有数字 FindControl("Image" & controlNumber)

还有另一种方法可以做到这一点吗?我更愿意将图像控件 ID 保留为有意义的东西。

4

1 回答 1

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);
        }
    }
}
于 2012-08-09T15:30:15.187 回答