Kentico 10基于另一个Web部件控制Web部件的可见性

Kentico 10基于另一个Web部件控制Web部件的可见性,kentico,Kentico,我在一个页面上有两个可编辑文本web部件。一个web部件上设置了默认文本,因为大多数情况下它都是相同的文本 我想根据实时站点的另一个web部件的文本设置此web部件的可见性 我试过这个: {#!string.IsNullOrEmpty(WebPart.GetValue("AreaDescription", "Content")) && CMS.PortalEngine.ViewModeEnum.LiveSite == CMS.PortalEngine.PortalContex

我在一个页面上有两个可编辑文本web部件。一个web部件上设置了默认文本,因为大多数情况下它都是相同的文本

我想根据实时站点的另一个web部件的文本设置此web部件的可见性

我试过这个:

 {#!string.IsNullOrEmpty(WebPart.GetValue("AreaDescription", "Content")) && 
CMS.PortalEngine.ViewModeEnum.LiveSite == CMS.PortalEngine.PortalContext.ViewMode  #}
但是它永远不可见,因此它无法成功地拾取其他Web部件中的文本。所以我想也许我需要调用GetContent()来获取用户提供的可编辑区域的文本。我尝试编写一个自定义转换方法,但是使用下面的PagePlaceholder是未知的,我不确定如何获得对它的引用

CMSAbstractWebPart webpart = PagePlaceholder.FindWebPart("webPartId");

在宏中尝试{%(ViewMode==“LiveSite”)&&(CMSContext.CurrentDocument.WebPartID!=“”)\%}

尝试{%(ViewMode==“LiveSite”)&&&(CMSContext.CurrentDocument.WebPartID!=“”)\%}

获取可编辑文本的内容:

{%CurrentDocument.DocumentContent["webPartId"]#%}
所以你要找的是这样的东西:

{%!string.IsNullOrEmpty(CurrentDocument.DocumentContent["AreaDescription"]) && (PortalContext.ViewMode == "LiveSite")#%}

在宏中获取可编辑文本的内容:

{%CurrentDocument.DocumentContent["webPartId"]#%}
所以你要找的是这样的东西:

{%!string.IsNullOrEmpty(CurrentDocument.DocumentContent["AreaDescription"]) && (PortalContext.ViewMode == "LiveSite")#%}

来自Kentico support-宏将不允许我执行我想要实现的操作,因为其他web部件的内容在CMSContext或DocumentContent中不可用

当我试图避免自定义web部件时,他们建议我可以为我的web部件创建一个与default plus add相同的替代布局:

您的onLoad或任何更好的事件处理程序 如果是自定义web部件,我可以添加:

///find another web part - in this case WebPart1
CMSAbstractWebPart webpart1 = PagePlaceholder.FindWebPart("WebPart1");

///store value/content of chosen property
string wp1DefaultText = ValidationHelper.GetString(webpart1.GetValue("DefaultText"), "");
可能在Prerender上,以确保它不会被覆盖


在这一阶段,我只想删除默认文本,因为这感觉像是我在与系统作战,获得的价值可能不值得努力/定制。

来自Kentico support-宏将不允许我做我想做的事情,因为其他web部件的内容在CMSContext或DocumentContent中不可用

当我试图避免自定义web部件时,他们建议我可以为我的web部件创建一个与default plus add相同的替代布局:

您的onLoad或任何更好的事件处理程序 如果是自定义web部件,我可以添加:

///find another web part - in this case WebPart1
CMSAbstractWebPart webpart1 = PagePlaceholder.FindWebPart("WebPart1");

///store value/content of chosen property
string wp1DefaultText = ValidationHelper.GetString(webpart1.GetValue("DefaultText"), "");
可能在Prerender上,以确保它不会被覆盖


在这一阶段,我只想删除默认文本,因为它让我感觉像是在与系统作斗争,所获得的价值可能不值得努力/定制。

谢谢!不幸的是,标题没有显示。这就好像AreaDescription被解释为空。即使我已经在页面视图中输入了文本到可编辑文本区域。谢谢!不幸的是,标题没有显示。这就好像AreaDescription被解释为空。即使我已经在页面视图中输入了文本到可编辑文本区域。谢谢!不幸的是,标题没有显示。这就好像AreaDescription被解释为空。即使我已经在页面视图中输入了文本到可编辑文本区域。谢谢!不幸的是,标题没有显示。这就好像AreaDescription被解释为空。即使我已将页面视图中的文本输入到可编辑文本区域。