如何获取渲染用户控制路径,即使用渲染 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;
}
RenderingReference
对象有 RenderingItem
属性.
RenderingItem
有 InnerItem
属性.
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
模板)。
我需要从 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;
}
RenderingReference
对象有RenderingItem
属性.RenderingItem
有InnerItem
属性.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
模板)。