在自定义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
,但它没有帮助。
有人知道我如何嵌入这个资源吗。
好吧,我自己做了一些变通(或破解)就解决了这个问题。
我已经覆盖了上面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。