layout - Sitecore:如何使用codebehind中的sublayout参数?

标签 layout parameters sitecore sitecore6

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

我了解,当将渲染(特别是子布局)添加到项目的演示文稿详细信息中时,我可以获取/设置参数,如此处所述(Sitecore 6 - using parameters)。

但是,我想使用布局定义项中的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?
}

仔细检查仍然无法正常工作,仅显示additional parameters:

最佳答案

您可以获取在子布局上定义的参数,但是有点麻烦。您需要首先找到正确的渲染项目,然后从那里检索参数

   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内部。我不建议您将它与生产一起使用。必须有更好的方法来实现您想要的。

关于layout - Sitecore:如何使用codebehind中的sublayout参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949214/

相关文章:

android - 如何在 Android 中创建类似 Twitter 个人资料页面的布局

c# - 在 MVC 项目上覆盖 WFFM 的 succesredirect

sitecore - 为什么营销人员 Web 表单无法在我的自定义保存操作中正确填充选定的 DropList 值?

java - 类中的实例变量或在 Java 的构造函数中将它们用作参数有什么区别?

python - 使用 args python 在参数中接受多个文件

arrays - Bash 参数扩展和数组索引操作

Sitecore 8、.NET 4.6、返回 404 的 bundle

css 并排 float div 高度 100%

ruby-on-rails - Rails 3,在布局中查找当前 View

android - 在屏幕方向更改时旋转 View (但不是布局)