2012-01-31 3 views
0

Я создал собственный расширитель, используя ASP.Net AJAX Control Toolkit. Ниже приведен фрагмент моего класса расширений.Внедрение изображений в Custom 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 файлы выше загружаются полностью с узлом, но не копирует рисунок в каталоге приложения. Css в style.css ссылка close.gif но он не находит его там.

Я установил Build Action на Embedded Resource, и это не поможет.

Кто-нибудь знает, как я могу встроить этот ресурс.

ответ

0

Ну, я сам исправил его с помощью небольшого рабочего времени (или взлома).

Я перекрываться событие OnInit в вышеприведенном ListCompleteExtender класса, как это,

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); 
    } 

Как вы могли видеть в предыдущем коде, я был в состоянии загрузить изображение close.gif в сборке, но не смог найти способ ссылки на него.

Я получил URL-адрес вышеуказанного изображения и написал его в элементе управления Label с ID lblCloseImageUrlListCompleteExtender. Я поместил метку в заголовок страницы, спрячу ее и открыв ViewState, чтобы сделать ее максимально легкой.

Теперь измените расширитель яваскрипта и добавить эти строки после управления рендеринга 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.

Что мы только что сделали, это изменить CSS, используемый для отображения close.gif, чтобы указать URL-адрес изображения, извлеченного из сборки.

Смежные вопросы