Skip to main content
 首页 » 编程设计

c#之访问同一页面上另一个 Webcontrol 中的标签

2024年02月03日26myhome

我正在使用一个 Sublayout (Sitecore),并且有一个 placeHolder 当前包含 2 个 Web 控件。我想从一个 Webcontrol 访问标签到另一个 Webcontrol。 我是否必须递归地找到标签,或者我可以通过另一种方式访问​​标签吗? 我尝试了不同的方法,例如:

this.Page.Findcontrol 这个.Parent.Findcontrol 等..

Label lblSearchTerm = (Label)this.Parent.FindControl("lblSearchTerm"); 
Label lblResults = (Label)this.Parent.FindControl("lblResults"); 

Label lblSearchTerm = null 不会给我任何结果。 我希望这里有人知道解决此问题的方法。

请您参考如下方法:

我不熟悉 Sitecore,但如果我正确理解你的问题,那么你的标签就是其中一个网络控件的子控件。如果这是真的,那么要找到这些标签,您需要先找到它们的父级(即:网络控件)。

假设以下控制层次结构:

Page 
> WebControl1 
   > Label 
> WebControl2 
   > Label 
   > Button 

如果您尝试从 WebControl1 访问 WebControl2 上的标签,则

Label lblSearchTerm = (Label)this.Parent.FindControl("lblSearchTerm"); 

将不起作用,因为 this.Parent 将返回 Page 对象,而您要查找的标签不是 Page 的子对象。相反,它是“WebControl2”的子项,它本身是页面的子项。所以像下面这样的东西应该起作用:

Label lblSearchTerm = (Label)this.Parent.FindControl("WebControl2").FindControl("lblSearchTerm"); 

真的,如果标签的所有者是唯一修改它的人会更好,但这完全是另一个讨论。