我使用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
,但没有帮助。
有谁知道如何嵌入此资源。
答案 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。