我们该怎么做呢?
AjaxControlToolkit是一个开源的项目,因此我们可以将ScriptPath属性的相关实现修改为合理的状况。但是我更喜欢让它的开发团队来处理这件事情,因为在本地代码和官方发布的最新版本之间作同步总是一件让我感到头疼的事情。所以我在开发Extender时,会使用以下这种简单的做法。我们还是使用AutoCompleteExtender作为示例:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
ScriptManager.GetCurrent(this.Page).ResolveScriptReference +=
new EventHandler<ScriptReferenceEventArgs>(OnResolveScriptReference);
}
private static void OnResolveScriptReference(object sender, ScriptReferenceEventArgs e)
{
ScriptReference script = e.Script;
if (script.Name == "AjaxControlToolkit.AutoComplete.AutoCompleteBehavior.js")
{
script.Assembly = "";
script.Name = "";
script.Path = "AutoCompleteBehavior.js";
}
}
在上面的代码片段中,我们响应了ScriptManager的ResolveScriptReference事件,这样我们就可以修改某个特定的ScriptReference对象使它指向一个外部脚本文件了。这正是我们需要的效果。