有没有办法通过代码了解子布局所在的占位符?
场景:如果它位于占位符B而不是占位符A,我希望子布局看起来有点不同。我可以使用子布局参数执行此操作,但我试图使其成为一个作者不必设置一个值,而sublayout只是足够聪明,可以知道它正在使用的上下文。
答案 0 :(得分:7)
你可以用规则引擎做一些聪明的事情,这可能就是我要解决的问题 - 可能使用基于占位符的规则引擎更改渲染参数,然后根据它在代码中执行某些操作......
但您可以从代码中执行以下操作:
Sublayout sublayout = this.Parent as Sublayout;
if (sublayout != null)
{
Placeholder placeholder = sublayout.Parent as Placeholder;
if (placeholder != null)
{
// name of the container placeholder
string placeHolderKey = placeholder.Key;
// full path of nested placeholders
string placeHolderContextKey = placeholder.ContextKey;
}
}
答案 1 :(得分:3)
正如@jammykam所说,我也鼓励您使用Rules Engine来实现解决方案。 为此,我将指出您在Stackoverflow上answer的方向similar question(我认为)
这可以让您深入了解其他用户所面临的类似场景。
最后,我们鼓励您阅读Trayek上blog的Changing placeholders with Rules帖子
希望上述内容有所帮助,并为您提供所需的解决方案。