このロジックをコントロールに入れて、画像の正しいURLを作成しました。私のコントロールは基本的に画像を表示する必要がありますが、srcは実際には画像サーバーを指すさまざまなパラメーターに基づく複雑な文字列です。
そこで、asp:Imageから派生したコントロールMyImageを作成することにしました。これは魅力のように機能します。今、私は同じロジックが必要ですが、私の画像はクリックに応答する必要があります。つまり、「MyImage」はサイトに画像を表示するために使用されますが、まれにクリック可能にしたい場合があります。
私は3つの選択肢があったと思います。
- MyImageを、asp:Imageではなくasp:ImageButtonから派生するように変更します。
- MyImageから新しいMyClickImageにすべてのコードをコピーし、asp:ImageButtonから派生します。
- MyImageにロジックをラップしてハイパーリンクを追加し、そのハイパーリンクにIPostbackHandlerを実装して、イベントを処理するロジックを追加します。
明らかに、2つのほぼ同じコントロールを維持する必要があるため、オプション2)の使用は避けたいと思います。オプション1)の問題点は、私が見ているように(おそらく私は間違っていますか?)、クリック可能ではないはずのサイト上のすべての画像が自動的にクリック可能になることです。オプション3)は、状態、イベントを維持し、リンクを手動で構築する必要があるため、非常に複雑に見えます。
私は「あなたは愚かです、クリック可能にしたくないときはプロパティ「x」をfalseに設定するだけです」のような簡単な答えを探しています-しかし、私が誤解していなければ、それはそれほど明白ではなく、もちろんもっと手の込んだ答えでいいでしょう:)
編集:3番目のオプションを追加しました-そもそもそこに置くのを忘れました:)