0

ImageUrlを同じ画像ファイルに動的に設定するために、vb.netコードビハインドですべてのasp:Imageコントロールを見つけようとしています。これは、コントロールごとに個別に行うことができますが、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 に答える