Domanda

Come faccio a risolvere il seguente errore generata da un Microsoft AJAX framework JavaScript metodo?Si tratta di un generata automaticamente riga di codice JavaScript da un Utente personalizzata di Controllo in un Form Web App (Sitefinity 5 cm)

Messaggio Di Errore:

In grado di ottenere la proprietà 'FancyBlockDesigner' undefined o di riferimento null

Qui è il JavaScript che sta gettando il messaggio di errore:

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

Piuttosto che discutere il ascx e cs file che tenta di astratto questo dettaglio via da me, io voglio sapere che cosa questo errore significa.Se ho capito bene il dettaglio, l'astrazione potrebbe avere più senso.

È stato utile?

Soluzione

"$creare" la funzione in ASP.NET Ajax crea un'istanza della classe JavaScript.Microsoft aveva una propria opinione su come fare JavaScript object-oriented e in quanto tempo aveva dimostrato, il loro approccio non era esattamente perfetto.

Comunque, per tentare di spiegare ciò che sta accadendo, mi permetta di dare un po ' di una panoramica oh come funziona.Partiamo da una lato server di controllo che implementa IScriptControl interfaccia che i mandati di due membri:GetScriptDescriptors e GetScriptReferences.La seconda è abbastanza semplice, che ti consente di registrare i riferimenti a tutti i file JavaScript che si controllo richiederà.Il GetScriptDescriptors, invece, ti permette di definire tutte le istanze di classi JavaScript che si desidera utilizzare come esso consente di impostare le loro proprietà - inizializzare loro, se volete.

Cosa generata automaticamente il codice JavaScript che hai incollato dice sostanzialmente che si sono definiti in GetScriptDescriptors che avrete bisogno di una istanza di tipo "SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner" in cui si desidera Editor di proprietà per essere inizializzato.Questo codice andrà a cercare un JavaScript costruttore che assomiglia a questo:

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

}

che più probabilmente ha anche un prototipo definito, qualcosa come:

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

}

Ora, dal momento che l'errore che hai postato stati:"Impossibile ottenere la proprietà 'FancyBlockDesigner' undefined o di riferimento null", probabilmente uno dei seguenti è il problema:

  • Non è incluso il file JavaScript che contiene la classe (costruttore + prototipo) con cui ho parlato sopra
  • Hai dimenticato di aggiungere "FancyBlockDesigner al costruttore (sembra che si dispone di un altro oggetto, magari attraverso MS Ajax spazi dei nomi - "SitefinityWebApp.Esd.TheLab"
  • Non hai registrato il "SampleHtmlEditor" spazio dei nomi.Assicurarsi che nella parte superiore del tuo file JS è avere questo: Type.registerNamespace("SitefinityWebApp.Esd.TheLab.SampleHtmlEditor");

Così, racconto lungo, la funzione con il nome di "SitefinityWebApp.Esd.TheLab.SampleHtmlEditor.FancyBlockDesigner" non può essere trovato.

Spero che questo aiuta, Ivan

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top