2017-09-26 12 views
0

j'ai suivi cet article étapes pédagogiques de 1 à 7
https://knowledgebase.progress.com/articles/Article/page-appears-blank-to-non-admin-userscontrôles de mise en page Sitefinity get d'une page

Ok, mais je les différents cas. Sur ce Working page j'ai placé deux contrôles de disposition 100%, alors je veux obtenir ces contrôles du code, mais ils sont manquants.

Dans la plupart des exemples dans la documentation et la base de connaissances, ils montrent les lignes de code ci-dessous pour accéder à ces contrôles de mise en page:

var layoutControlOnPage = pageData.Controls 
       .FirstOrDefault(c => c.ObjectType == typeof(LayoutControl).FullName); 

mais dans mon cas, layoutControlOnPage est toujours NULL. Je ne peux accéder à aucun des contrôles Layout. Le code ci-dessus est exécuté à partir de la page de formulaire Web .aspx.

Voici quelques ressources:
https://docs.sitefinity.com/overview-create-pages/for-developers-adding-layout-controls-to-pages-and-page-templates
https://knowledgebase.progress.com/articles/Article/get-placeholders-of-feather-grid-layout-controls

Est-ce que parce que la page est sans la page-template (Le modèle de page est réglé sur Empty (start from scratch))?

Je poste cette question ici parce que j'espère que quelqu'un m'aidera. Dans les forums Sitefinity, je ne recevrais aucune aide.

Je vais essayer dans un autre projet et mettra à jour ce bientôt

Mise à jour:
J'ai testé le même code sur un autre projet Sitefinity et je suis en mesure d'accéder aux les commandes de mise en page de la code.

Des idées comment accéder aux contrôles de mise en page et qu'est-ce qui m'empêche d'y accéder?

Répondre

0

Je viens de créer une nouvelle page sans modèle et j'ai fait glisser un bloc de contenu et deux contrôles de mise en page à 100%. Maintenant, je peux y accéder et le code suivant renvoie les contrôles corrects comme je m'y attendais.

var layoutControlOnPage = pageData.Controls 
      .FirstOrDefault(c => c.ObjectType == typeof(LayoutControl).FullName); 

Je ne sais pas ce qui cause le problème avec la page précédente.

0

Le problème est probablement que ce contrôle est imbriqué dans un autre contrôle de page. Vous voudrez essayer et utiliser cette méthode récursive pour trouver le contrôle de page.

https://stackoverflow.com/a/253962/2148567

Méthode de répondre SO:

public static IEnumerable<Control> GetAllControls(this Control parent) 
{ 
    foreach (Control control in parent.Controls) 
    { 
     yield return control; 
     foreach(Control descendant in control.GetAllControls()) 
     { 
      yield return descendant; 
     } 
    } 
} 

Utilisation

var checkBoxes = this.GetAllControls() 
        .OfType<CheckBox>() 
        .TakeWhile<CheckBox>(cb => cb.Checked); 
+0

Merci pour la réponse. Je suis à la recherche d'un contrôle de disposition. Et il ne peut être imbriqué qu'à l'intérieur d'un autre contrôle de disposition. J'ai donc essayé d'imbriquer deux contrôles de disposition et j'ai pu y accéder. 'pageDraft.Controls.Count' était 2. Je ne peux pas reproduire ceci dans un autre projet sitefinity. J'ai eu une discussion avec l'équipe de support et ils m'ont expliqué une autre raison possible de ce problème: au contrôle de disposition associé a été ajouté l'autorisation pour le contrôle du contenu. – mihkov