Question

Comment dépanner l'erreur suivante étant lancée par une méthode structure Microsoft Ajax JavaScript?C'est une ligne de javascript générée automatiquement à partir d'un contrôle utilisateur personnalisé dans une application Web Forms (Sitefinity 5 CMS)

Message d'erreur:

Impossible d'obtenir la propriété 'FancyBlockDesigner' de référence non définie ou nulle

Voici le JavaScript qui lance l'erreur:

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"));
});

Plutôt que de discuter des fichiers ASCX et CS qui essaient de résumer ce détail loin de moi, je veux savoir ce que signifie cette erreur.Si je comprends le détail, l'abstraction pourrait avoir plus de sens.

Était-ce utile?

La solution

"$ Create" fonction dans ASP.NET AJAX crée une instance de classe JavaScript. Microsoft a eu leur propre opinion sur la manière de faire de l'objet JavaScript orienté et au fil du temps, leur approche n'était pas exactement parfaite.

Quoi qu'il en soit, essayez d'expliquer ce qui se passe, laissez-moi donner un peu de vue d'ensemble oh comment ça fonctionne. Nous commençons par un contrôle côté serveur qui implémente IscriptControl Interface qui charge deux membres: GetscriptScriptor et GetsCriptreferences. Le second est assez simple - il vous permet d'enregistrer des références à tous les fichiers JavaScript que vous contrôlez auront besoin. Le GetscriptDescriptor, d'autre part, définissez toutes les instances de classes JavaScript que vous souhaitez utiliser et vous permet de définir leurs propriétés - initiez-les, si vous voulez.

Quel est le code JavaScript autogénétré que vous avez collé est fondamentalement que vous avez défini dans GetscriptScriptors que vous aurez besoin d'une instance de type "SitefinityWebApp.esd.fryB.sampleHtMleditor.fancyBlockDesigner" Si vous souhaitez que la propriété de la rédaction soit initialisée. Ce code va chercher un constructeur JavaScript qui ressemble à ceci:

function SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner(element) {

}

qui a le plus probablement également un prototype défini, quelque chose comme:

SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner.prototype = {

}

Maintenant, étant donné que l'erreur que vous avez affichée des États: "Impossible d'obtenir" FancyBlockDesigner "de référence non définie ou NULL", la plupart des éléments suivants sont le problème:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top