2012-01-31 12 views
0

ASP.Net AJAX Control Toolkitを使用してカスタムエクステンダを作成しました。以下は、エクステンダクラスのスニペットです。カスタムASP.Net AJAX Extenderに画像を埋め込む

using System.ComponentModel; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using AjaxControlToolkit; 

[assembly: WebResource("CustomExtenders.ListComplete.ListCompleteBehavior.js", "text/javascript")] 
[assembly: WebResource("CustomExtenders.ListComplete.style.css", "text/css")] 
[assembly: WebResource("CustomExtenders.ListComplete.close.gif", "image/gif")] 

namespace CustomExtenders.ListComplete 
{ 
    [Designer(typeof(ListCompleteDesigner))] 
    [ClientScriptResource("CustomExtenders.ListCompleteBehavior", "CustomExtenders.ListComplete.ListCompleteBehavior.js")] 
    [ClientCssResource("CustomExtenders.ListComplete.style.css", LoadOrder = 1)] 
    [TargetControlType(typeof(ListBox))] 
    public class ListCompleteExtender : ExtenderControlBase 
    { 

上記のjsファイルとcssファイルは、アセンブリに完全にロードされますが、アプリケーションディレクトリのgifイメージはコピーされません。 style.css参照close.gifにあるCSSですが、そこには見つかりません。

Build ActionプロパティをEmbedded Resourceに設定していますが、それは役に立ちません。

どのように私はこのリソースを埋め込むことができます知っていますか?

答えて

0

まあ、私はちょっとした回避策(またはハック)で自分で修正しました。

私は以前のコードで見ることができるように、私は、アセンブリ内の画像close.gifをロードすることができましたが、見つけることができませんでした

、このよう
protected override void OnInit(System.EventArgs e) 
    { 
     base.OnInit(e); 

     string closeImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomExtenders.ListComplete.close.gif"); 

     //LiteralControl include = new LiteralControl(closeImageUrl); 

     Label lblCloseImageUrl = new Label(); 
     lblCloseImageUrl.ID = "lblCloseImageUrlListCompleteExtender"; 
     lblCloseImageUrl.ViewStateMode = ViewStateMode.Disabled; 
     lblCloseImageUrl.EnableViewState = false; 
     lblCloseImageUrl.Text = closeImageUrl; 
     lblCloseImageUrl.Attributes["style"] = "display: none;"; 

     this.Page.Header.Controls.Add(lblCloseImageUrl); 
    } 

を上記ListCompleteExtenderクラスでのOnInitイベントをオーバーライドしていますそれを参照する方法。

私は上記の画像のURLを取得し、ID lblCloseImageUrlListCompleteExtenderのラベルコントロールで書きました。私は、ページヘッダーにラベルを配置し、それを隠し、できるだけ軽くするためにViewStateを無効にしました。

は今のjavascriptをレンダリング制御した後、これらの行を追加しますJavaScriptとエクステンダーを変更:上記の使用

 var imgCloseUrl = $("#lblCloseImageUrlListCompleteExtender").text() 
     var closebuttonStyle = getCSSRule('ul.holder li.bit-box a.closebutton'); 
     closebuttonStyle.style.background = 'url("' + imgCloseUrl + '") repeat scroll 0 0 transparent'; 

getCSSRule機能がhereから取得されます。

ここで行ったことは、close.gifを表示するために使用されるCSSを、アセンブリから抽出されたイメージのURLを指すように変更することです。

関連する問題