在自定义ASP.Net AJAX扩展器中嵌入图像

本文关键字:图像 扩展器 AJAX 自定义 ASP Net | 更新日期: 2023-09-27 18:22:14

我已经使用ASP.Net AJAX控制工具包创建了一个自定义扩展程序。下面是我的扩展程序类的片段。

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中的css引用了close.gif,但在那里找不到它。

我已将Build Action属性设置为Embedded Resource,但它没有帮助。

有人知道我如何嵌入这个资源吗。

在自定义ASP.Net AJAX扩展器中嵌入图像

好吧,我自己做了一些变通(或破解)就解决了这个问题。

我已经覆盖了上面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,但找不到引用它的方法

我已经检索到上面图像的URL,并将其写入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函数就是从这里获得的。

我们刚刚做的是,修改用于显示close.gif的CSS,以指向从汇编中提取的图像的URL。