1

サイトのヘッダー画像があるユーザーコントロールページ(.ascx)があります。webform(.aspx)でヘッダー画像を動的に変更する必要があります。

MY .Aspxコード:

protected void Page_PreInit(object sender, EventArgs e)
{
   Control hdrCtl = null;
   try
   {                               
       hdrCtl = LoadControl("~/UI/Header.ascx");
       if (hdrCtl != null)
       {    
           Image src = (Image)hdrCtl.FindControl("imgHeader");                                     
           src.ImageUrl = "~/Content/assets/images/editorial_1.jpg";
       }
   }
   catch (Exception ex)
   {
       Trace.Write(ex.Message);
   }
}

しかし、画像は変更されませんでした...誰かが私が問題を理解するのを手伝ってくれますか?

前もって感謝します

ビジェイ

4

1 に答える 1

0

ここでの問題は、コントロールを再度ロードし、次の行のページに追加しないことです。

hdrCtl = LoadControl("~/UI/Header.ascx");

コードをそのまま機能させるには、Page.Controls.Add(hdrCtl)がありませんが、それがあなたのやり方ではないと思います。

あなたのコントロールはすべてあなたのページに存在することを理解していますので、これは画像を変更する方法ではありません.
ページに追加する準備ができているカスタム コントロールの画像を変更するには、次のようにカスタム コントロール内の画像にパラメーターを作成する必要があります。

public string cHeaderImage
{
  set { imgHeader.ImageUrl = value; }
}

そして、あなたは簡単にします

protected void Page_PreInit(object sender, EventArgs e)
{
  // this is the id of your custom control
  headerCntrID.cHeaderImage = "~/Content/assets/images/editorial_1.jpg";
}
于 2012-11-23T08:04:55.163 に答える