Sitecore 6.5动态更改用户控件

时间:2015-02-12 23:31:04

标签: asp.net sitecore sitecore6

我有一些项目的集合。使用*符号我在所有这些的演示文稿详细信息中设置用户控件(ascx)。现在我有一个问题,因为这个项目必须在另一个控件中显示。是否有一些技巧允许我动态更改使用的控件,例如检查网址段?

2 个答案:

答案 0 :(得分:1)

我猜测你正在使用名为wildcard的{​​{1}}项,并在其上定义了一些演示详细信息。现在你想为网址显示不同的组件?

如果您想要完全不同的演示文稿,可以添加另一个项目作为*项目的兄弟,并在其中添加新的演示文稿详细信息。如果网址段等于此项目名称,则此项目将在通配符项目之前匹配。

如果您只想更改一个或几个组件,可以对此组件和*规则使用个性化。

答案 1 :(得分:1)

Marek的答案是可取的,但为了完整起见,我将提供另一种可能的选择。

这取决于你如何处理通配符。如果你使用的是市场中的通配符模块,我认为它不会起作用,而且它可能不适合你现有的一些代码,但是这里有...

您可以将所需的演示文稿详细信息放在目标项目本身上。然后,当您解析通配符时,您需要将上下文项更改为选定的目标项。当页面加载时,它将使用新设置的上下文项的表示。

实现此目的的一种方法是创建自定义项目解析器

class WildCardItemResolver : ItemResolver
{
    public override Process(HttpRequestArgsargs args)
    {
        base.Process(args);

        // if Context.Item is as wildcard
        // look up the target item

        Context.Item = targetItem 
    }
}