如何解决Microsoft AJAX JavaScript框架方法引发的以下错误?它是来自Web窗体应用程序(Sitefinity 5 CMS)中的自定义用户控件的自动生成的JavaScript行
错误讯息:
无法获取未定义或空引用的属性'FancyBlockDesigner'
以下是抛出错误的JavaScript:
Sys.Application.add_init(function() {
$create(SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner, null, null, {"Editor":"propertyEditor_ctl00_ctl00_ctl00_ctl00_ctl00_Editor","propertyEditor":"propertyEditor"}, $get("propertyEditor_ctl00_ctl00_ctl00"));
});
我不想讨论试图从我这里抽象出这个细节的ascx和cs文件,而是想知道这个错误意味着什么。如果我理解细节,抽象可能会更有意义。
答案 0 :(得分:1)
无论如何,为了解释发生了什么,让我给一点概述哦它是如何工作的。我们从服务器端控件开始,该控件实现IScriptControl接口,该接口强制要求两个成员:GetScriptDescriptors和GetScriptReferences。第二个非常简单 - 它允许您注册对您控制所需的所有JavaScript文件的引用。另一方面,GetScriptDescriptors允许您定义要使用的JavaScript类的所有实例,并允许您设置它们的属性 - 如果愿意,可以初始化它们。
您粘贴的自动生成的JavaScript代码基本上是您在GetScriptDescriptors中定义的,您需要一个类型为“SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner”的实例,您希望在其中初始化Editor属性。这段代码将会找到一个如下所示的JavaScript构造函数:
function SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner(element) {
}
最有可能也定义了原型,如:
SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner.prototype = {
}
现在,由于您发布的错误指出:“无法获取未定义或空引用的属性'FancyBlockDesigner'”,最有可能出现以下问题之一:
Type.registerNamespace("SitefinityWebApp.Esd.TheLab.SampleHtmlEditor");
所以,简短的故事很长,找不到名为“SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner”的函数。
希望这有帮助, 伊万