在Custom ASP.Net AJAX Extender中嵌入图像

时间:2012-01-31 19:38:04

标签: c# asp.net ajaxcontroltoolkit

我使用ASP.Net AJAX Control Toolkit创建了一个自定义扩展器。以下是我的扩展程序类的片段。

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,但没有帮助。

有谁知道如何嵌入此资源。

1 个答案:

答案 0 :(得分:0)

好吧,我通过一些解决方法(或黑客)来修复它。

我已经覆盖了上述ListCompleteExtender类中的OnInit事件,如下所示,

 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但无法找到引用它的方法。

我检索了上面图片的网址,并将其写在ID为lblCloseImageUrlListCompleteExtender的Label控件中。我已将标签放在页眉中,将其隐藏并移除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。