【问题标题】:Sitefinity get layout controls of a pageSitefinity 获取页面的布局控件
【发布时间】:2018-03-07 07:42:04
【问题描述】:

我按照这篇文章的说明步骤从 1 到 7
https://knowledgebase.progress.com/articles/Article/page-appears-blank-to-non-admin-users

好的,但我有不同的情况。在那个Working page 上我放置了两个布局控件100%,然后我想从代码中获取这些控件,但是它们丢失了。

在文档和知识库中的大多数示例中,它们显示了以下代码行来访问该布局控件:

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

但就我而言,layoutControlOnPage 始终为 NULL。我无法访问任何布局控件。上面的代码是从.aspx web 表单页面执行的。

这里有一些资源:
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

是不是因为页面没有page-template(页面模板设置为Empty (start from scratch))?

我在这里发布这个问题是因为我希望有人能帮助我。在 Sitefinity 论坛中,我不会得到任何帮助。

我会在另一个项目中尝试这个,很快就会更新

更新
我已经在另一个 sitefinity 项目上测试了相同的代码,并且能够从代码中访问布局控件。

任何想法如何访问布局控件以及阻止我访问它们的原因是什么?

【问题讨论】:

    标签: c# layout controls sitefinity


    【解决方案1】:

    问题可能是该控件嵌套在另一个页面控件中。您将需要尝试使用这种递归方法来查找页面控件。

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

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

    用法

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

    【讨论】:

    • 感谢您的回复。我正在寻找一个布局控件。它只能嵌套在另一个布局控件中。所以我尝试嵌套两个布局控件并且我能够访问它们。 pageDraft.Controls.Count 是 2。我无法在另一个 sitefinity 项目中重现它。我与支持团队进行了讨论,他们向我解释了导致该问题的另一个可能原因:为相关的布局控件添加了内容控制权限。
    【解决方案2】:

    我刚刚创建了一个没有模板的新页面,并拖动了一个内容块和两个 100% 布局控件。现在我可以访问它们并返回以下代码 符合我预期的正确控制。

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

    我不知道是什么导致上一页出现问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      相关资源
      最近更新 更多