如何获取渲染用户控制路径,即使用渲染 ID 的 Ascx 文件

How to get Get Rendering usercontrol path i.e Ascx file using Rendering ID

我需要从 RenderingID 获取 .ascx 用户控制文件系统路径。 下面的代码给了我一个项目的渲染列表,但它没有 return 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;
}
  1. RenderingReference 对象有 RenderingItem 属性.
  2. RenderingItemInnerItem 属性.
  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 模板)。