ツリービューを表す Web サーバー コントロールを作成します。したがって、展開/折りたたみには + と - の 2 つの画像を使用したいと考えています。ページにレンダリングするときに画像ソースとして使用できるように、これをコントロールに組み込むにはどうすればよいですか?
これはコンパイル済みの Web コントロール ライブラリにあるため、Web アプリケーションの外部画像に依存したくありません。
編集:Andre Kraemerによるこの回答
に基づいて、私は次のことを行いました:
AssemblyInfo.vb では:
<Assembly: System.Web.UI.WebResource("MyCompany.MyWebControls.Resources.plus.gif", "image/gif")>
<Assembly: System.Web.UI.WebResource("MyCompany.MyWebControls.Resources.minus.gif", "image/gif")>
私のRenderContents
オーバーライドでは:
Dim lPlusImage As New WebControls.Image()
Dim lMinusImage As New WebControls.Image()
lPlusImage.ImageUrl = Page.ClientScript.GetWebResourceUrl(Me.GetType(), "MyCompany.MyWebControls.Resources.plus.gif")
lMinusImage.ImageUrl = Page.ClientScript.GetWebResourceUrl(Me.GetType(), "MyCompany.MyWebControls.Resources.minus.gif")
lPlusImage.RenderControl(output)
lMinusImage.RenderControl(output)
私のアセンブリ名はMyWebControls
です。
私のルート名前空間はMyCompany.MyWebControls
.
画像plus.gif
と画像minus.gif
は という名前のフォルダーResources
にあり、画像のBuild ActionはEmbedded Resourceに設定されています。
それでもうまくいきません。エラーは発生しません。生成された画像の URL をブラウザーで直接試してみましたが、ボットは何も起こらず、空白のページだけです。
注:
リソース名に無効なパスを使用しようとしましたが、結果はまったく同じでした。実際のリソースをリソース名にマップするために何か特別なことをする必要があるのではないかと考えました。AssemblyInfo で指定されたものとは異なる名前をコードで使用した場合にのみ、404 Not Found エラーが発生しました。パスが実際のリソースを指していたこととは関係ありません。
編集:
私は解決策を見つけました!
C# と VB の違いであることがわかりました。この質問に対する私自身の回答を参照してください。