2017-09-26 1 views
0

Iは1から7
https://knowledgebase.progress.com/articles/Article/page-appears-blank-to-non-admin-usersSitefinityページのレイアウトコントロールを取得

[OK]をにこの記事の指導の手順に従ったが、私は異なる場合があります。その上でWorking page私は2つのレイアウトコントロールを配置した100%、私はコードからこのコントロールを取得したいが、それらが欠けている。ドキュメントや知識ベースの例のほとんどで

、彼らはそのレイアウトコントロールにアクセスするには、次のコード行を示しています。

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

しかし、私の場合には、layoutControlOnPageは常にNULLです。レイアウトコントロールにアクセスできません。上記のコードは.aspxウェブフォームページから実行されます。ここで

いくつかのリソースです:
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

ページは、ページテンプレートなしであるため、(ページテンプレートがEmpty (start from scratch)に設定されている)ということですか?

私は誰かが私を助けることを願っているので、私はここにこの質問を掲載します。 Sitefinityのフォーラムでは、私は何の助けも受けませんでした。

私は別のプロジェクトでこれをしようとして更新します。このすぐ

更新:私は別のsitefinityプロジェクトで同じコードをテストしていると私はからレイアウトコントロールにアクセスできるようにしています
コード。

レイアウトコントロールでのアクセス方法とそのアクセスを妨げるものはありますか?

答えて

0

テンプレートなしで新しいページを作成し、1つのコンテンツブロックと2つの100%レイアウトコントロールをドラッグしました。今、私はそれらにアクセスすることができ、次のコードは、私が期待した正しいコントロール を返します。

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

私は前のページの問題の原因を知りません。

0

問題はおそらく、そのコントロールが別のページコントロール内にネストされていることです。この再帰的メソッドを使用してページコントロールを検索しようとします。 SO答えるから

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

方法:

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

使用返信用

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

感謝。私はレイアウトコントロールを探しています。また、別のレイアウトコントロール内にのみネストすることができます。だから私は2つのレイアウトコントロールを入れ子にしようとしました、そして、私はそれらにアクセスすることができました。 'pageDraft.Controls.Count'は2でした。別のsitefinityプロジェクトでこれを再現することはできません。 私はサポートチームと話し合いましたが、その問題の別の理由を説明しました。関連するレイアウトコントロールにコンテンツコントロールの許可が追加されました。 – mihkov

関連する問題