2012-12-17 1 views
0

J'ai adapté l'élément de menu contextuel Umbraco créer afin de dupliquer le contenu. J'ai travaillé par le biais de tri de petits problèmes, mais je suis maintenant coincé. Lorsque j'essaie d'utiliser la méthode dialogHandler_temp.Create(), j'obtiens un NullReferenceException.NullReferenceException avec adapté Créer dans Umbraco 4.9

Toutes les variables utilisées ne sont pas nulles et la page ne l'est pas non plus. Est-ce que quelqu'un a une idée de comment je pourrais trier cela?

private void DoCreation() 
{ 
    if (!Page.IsValid) 
     return; 

    var hel = helper.Request("nodeType"); 
    var nType = int.Parse(nodeType.SelectedValue); 
    var nId = int.Parse(Request["nodeID"]); 
    var rName = rename.Text; 
    var cur = Current; 


    if (cur != null) // dialogHandler_temp.Create() is a static method 
     cur.ClientTools.ChangeContentFrameUrl(dialogHandler_temp.Create(hel, nType, nId, rName)).CloseModalWindow(); 
} 

Trace de la pile:

[NullReferenceException: Object reference not set to an instance of an object.] 
    umbraco.presentation.create.dialogHandler_temp.Create(String NodeType, Int32 TypeId, Int32 NodeId, String Text) +278 
    OptionalMultiLangPage.DoCreation() in c:\inetpub\wwwAmaris\optional_multiLang.aspx.cs:112 
    OptionalMultiLangPage.SbmtClick(Object sender, EventArgs e) in c:\inetpub\wwwAmaris\optional_multiLang.aspx.cs:96 
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +154 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3803 
+0

Que diriez-vous dialogHandler_temp? check dialogHandler_temp nul ou non et fournit également une trace complète de l'exception – Damith

+0

'dialogHandler_temp' - d'où vient cette variable? Où et comment est-il défini et initialisé? – Andrei

+0

@Andrei il fait partie d'Umbraco et est utilisé par Umbraco lui-même pour créer des nœuds. Il peut être trouvé sous 'umbraco.presentation.create' –

Répondre

0

Je suis ce triai. Il m'a fallu un certain temps pour réaliser que helper.Request("nodeType") ne devait pas renvoyer le type du nouveau nœud, mais plutôt la valeur du nœud xml de ce qui est fait. Cela doit être assigné quelque part - avec la classe Umbraco Content donc je l'ai manqué. Il doit être défini sur la valeur "content".

Mon code ressemble maintenant à:

private void DoCreation() 
    { 
     if (!Page.IsValid) 
      return; 

     const string xmlNodeVal = "content"; 
     var nType = int.Parse(nodeType.SelectedValue); 
     var nId = int.Parse(Request["nodeID"]); 
     var rName = rename.Text; 
     var returnUrl = dialogHandler_temp.Create(xmlNodeVal, nType, nId, rName); 
     var cur = Current; 

     if (cur != null) 
      cur.ClientTools.ChangeContentFrameUrl(returnUrl).CloseModalWindow(); 
    } 
Questions connexes