Sitecore UserControl中的ItemId

Sitecore UserControl中的ItemId,sitecore,Sitecore,我想换一种说法: 我有两个数据模板,一个用于带选项卡的产品,第二个用于带/不带选项卡的文章,分别使用产品和文章数据模板。考虑到选项卡要素数据模板将起全局作用,可以在任何时间点使用任何数据模板插入 现在的情况是,我将标签功能与产品关联,但与文章无关,所以结果应该是,在产品页面上,我应该查看标签功能,而在文章选项卡上,则不应该可见 问题仍然存在:我将如何检查我插入了选项卡功能的页面?另外,如何找到我当前所在的当前上下文页面的ItemID 尝试使用下面的代码。它将为您提供上下文中使用的当前Siteco

我想换一种说法: 我有两个数据模板,一个用于带选项卡的产品,第二个用于带/不带选项卡的文章,分别使用产品和文章数据模板。考虑到选项卡要素数据模板将起全局作用,可以在任何时间点使用任何数据模板插入

现在的情况是,我将标签功能与产品关联,但与文章无关,所以结果应该是,在产品页面上,我应该查看标签功能,而在文章选项卡上,则不应该可见


问题仍然存在:我将如何检查我插入了选项卡功能的页面?另外,如何找到我当前所在的当前上下文页面的ItemID

尝试使用下面的代码。它将为您提供上下文中使用的当前Sitecore项

Sitecore.Context.Item

尝试使用下面的代码。它将为您提供上下文中使用的当前Sitecore项

Sitecore.Context.Item

如果已经为内容项分配了不同的数据模板,则可以使用如下代码检查该项所基于的数据模板:(这样做可能比只检查ItemId更好)

但是,如果您只需要ItemId,可以使用如下代码:

        Sitecore.Data.Items.Item current = Sitecore.Context.Item;
        Sitecore.Data.ID myID = current.ID;

希望对您有所帮助。

如果您为内容项分配了不同的数据模板,那么您可以使用如下代码检查项目所基于的数据模板:(这样做可能比只检查项目ID更好)

但是,如果您只需要ItemId,可以使用如下代码:

        Sitecore.Data.Items.Item current = Sitecore.Context.Item;
        Sitecore.Data.ID myID = current.ID;

希望能有所帮助。

我遇到了一些情况,不确定哪一种是你的:

1。当前项目是唯一的项目

如果您正在执行显示产品或服务项目的完整详细信息的详细信息页面之类的操作,那么Sitecore.Context.item调用将获取上下文中的当前项目,大多数情况下是基于URL中的当前项目路径(有一些方法可以更改上下文,但现在我们忽略这些附带情况)。然后,您可以像其他任何时候一样绑定字段或提取值

2。绑定到项目列表

如果您正在执行类似于“事物”列表的操作(即绑定到可能是产品或服务的项目列表的.NET repeater),并且希望使用用户控件显示每个项目。有几个选择:

  • 向控件添加属性(类似于“数据源”),并在子布局中的中继器数据绑定期间设置用户控件数据源属性(或在中继器标记中设置)
  • 在子布局中的repeater数据绑定期间,从项目中提取所需的属性,并将其传递给用户控件上的不同属性
  • 3。由数据源驱动

    如果正在运行配置为具有数据源的子布局,则不能使用上下文项,因为上下文项将引用绑定到正在显示的“页面”的项,而不是您正在处理的特定组件。在这种情况下,您需要以下代码从当前子布局中提取数据源:

    var dataSourceId = ((Sitecore.Web.UI.WebControl)Parent).DataSource;
    

    (注意:您可能希望对上述代码执行一些错误处理,以防止出现空引用错误)

    我遇到了一些情况,不确定哪种情况是您的:

    1。当前项目是唯一的项目

    如果您正在执行显示产品或服务项目的完整详细信息的详细信息页面之类的操作,那么Sitecore.Context.item调用将获取上下文中的当前项目,大多数情况下是基于URL中的当前项目路径(有一些方法可以更改上下文,但现在我们忽略这些附带情况)。然后,您可以像其他任何时候一样绑定字段或提取值

    2。绑定到项目列表

    如果您正在执行类似于“事物”列表的操作(即绑定到可能是产品或服务的项目列表的.NET repeater),并且希望使用用户控件显示每个项目。有几个选择:

  • 向控件添加属性(类似于“数据源”),并在子布局中的中继器数据绑定期间设置用户控件数据源属性(或在中继器标记中设置)
  • 在子布局中的repeater数据绑定期间,从项目中提取所需的属性,并将其传递给用户控件上的不同属性
  • 3。由数据源驱动

    如果正在运行配置为具有数据源的子布局,则不能使用上下文项,因为上下文项将引用绑定到正在显示的“页面”的项,而不是您正在处理的特定组件。在这种情况下,您需要以下代码从当前子布局中提取数据源:

    var dataSourceId = ((Sitecore.Web.UI.WebControl)Parent).DataSource;
    

    (注意:您可能希望对上述代码执行一些错误处理,以防止出现空引用错误)

    我想重新表述我的问题:我想重新表述我的问题:在使用代码时:Sitecore.Data.Items.Item current=Sitecore.Context.Item;Sitecore.Data.ID myID=current.ID;它给了我“家”的itemid。所以它实际上并没有解决我的问题;Sitecore.Data.ID myID=current.ID;它给了我“家”的itemid。所以它实际上并不能解决我的问题。