Sitecore:如何使用代码隐藏的子布局参数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sitecore:如何使用代码隐藏的子布局参数?相关的知识,希望对你有一定的参考价值。

如何从子布局的代码隐藏中的“参数”字段(第二个屏幕截图)中获取值?

我知道我可以在渲染(特别是子布局)中获取/设置参数,当它被添加到项目的演示细节时,就像这里描述的那样(Sitecore 6 - using parameters)。

但是,我想使用布局定义项中的参数字段。在属于布局定义的文件的代码隐藏中,我可以将父级转换为子布局,并且该对象也具有.Parameters属性,但是这不包含我期望的值。

这是控制代码隐藏中的Page_Load方法:

protected void Page_Load(object sender, EventArgs e)
{
    var sublayout = ((Sublayout)this.Parent);
    string rawParameters = Attributes["sc_parameters"];
    NameValueCollection parameters =
      Sitecore.Web.WebUtil.ParseUrlParameters(rawParameters); 
      //parameters contains values from "Additional parameters (first screenshot)

      //I do not know the sublayout item id or sublayout path, so how do I get
      //the values from the second screenshot?
}

Doublecheck still doesn't work, only additional parameters are shown:

答案

你可以获得在子布局上定义的参数,但它有点长。您需要首先找到正确的渲染项,然后从中检索参数

   var sublayout = ((Sublayout)this.Parent);
   //Get all rendering
   var renderings = Sitecore.Context.Item.Visualization.GetRenderings(Sitecore.Context.Device, true);

   //Get the first rendering that matches the current sublayout's path
   var sublayoutRendering = renderings.FirstOrDefault(r => r.RenderingItem.InnerItem["Path"] == sublayout.Path);

   if (sublayoutRendering != null)
         Response.Write(sublayoutRendering.RenderingItem.Parameters);

您可以使用Mark的方式获取“布局详细信息”中设置的参数的参数

编辑:上述解决方案将工作,但它非常脆弱,取决于未来可能会改变的sitecore内部。我不建议你随身携带它。必须有更好的方法来实现你想要的。

另一答案

像这样:

var sublayout = ((Sublayout)this.Parent);
NameValueCollection nvc = Sitecore.Web.WebUtil.ParseUrlParameters(sublayout.Parameters);

Here's a blog post that make it easier to do with extension methods

Here's a shared source module for Sitecore that wraps this up in a class as well。它由Sitecore USA的首席技术官John West撰写。

以上是关于Sitecore:如何使用代码隐藏的子布局参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Sitecore 地理位置信息中获取用户所在的国家/地区?

UIScrollView 作为 UIView 的子视图不适用于自动布局

“隐藏”具有自动布局子视图的 UIView

如何在 PyQt 中隐藏布局?

如何在 sitecore 中获取媒体项目详细信息?

使用 TextTransform.exe 在 sitecore 中生成 TDS 代码