【问题标题】:How to get Get Rendering usercontrol path i.e Ascx file using Rendering ID如何获取渲染用户控件路径,即使用渲染 ID 的 Ascx 文件
【发布时间】:2017-09-13 04:42:53
【问题描述】:

我需要从RenderingID 获取.ascx 用户控制文件系统路径。 下面的代码为我提供了一个项目的渲染列表,但它不会在RenderingReference 数据对象的任何属性中返回用户控件的路径。

public RenderingReference[] GetListOfSublayouts(Sitecore.Data.ID itemId)
{
    Sitecore.Layouts.RenderingReference[] renderings = null;

    Item item = Sitecore.Context.Database.GetItem(Sitecore.Data.ID.Parse(itemId));
    if (item != null)
    {
        renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, true);
    }

    return renderings;
}

【问题讨论】:

    标签: c# asp.net api content-management-system sitecore


    【解决方案1】:
    1. RenderingReference 对象具有 RenderingItem 属性。
    2. RenderingItem 具有 InnerItem 属性。
    3. InnerItem 属于 Item 类型,它是 Sitecore 树中的子布局项。它有 Path 字段,其中包含 ascx 文件的路径。

    所以代码会是这样的:

    RenderingReference firstReference = renderings[0];
    RenderingItem renderingItem = firstReference.RenderingItem;
    Item innerItem = renderingItem.InnerItem;
    string ascxPath = innerItem["Path"];
    

    此代码未经测试,但应为您指明正确的方向。

    您应该添加空检查并测试模板(例如,如果 innerItem 使用 /sitecore/templates/System/Layout/Renderings/Sublayout 模板)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多