我正在使用一个Sublayout(Sitecore)并拥有一个placeHolder,目前拥有2个webcontrols。我想从一个Webcontrol访问Label到另一个Webcontrol。 我是否必须递归地找到Label,或者我可以通过其他方式访问Label? 我尝试了不同的方法,如:
this.Page.Findcontrol this.Parent.Findcontrol 等。
Label lblSearchTerm = (Label)this.Parent.FindControl("lblSearchTerm");
Label lblResults = (Label)this.Parent.FindControl("lblResults");
不会给我任何结果,因为标签lblSearchTerm = null。 我希望有人知道解决这个问题的方法。
答案 0 :(得分:4)
我不熟悉Sitecore,但如果我理解你的问题,那么你的标签就是其中一个网络控件的子控件。如果这是真的,那么要找到那些标签,你需要先找到他们的父母(即:webcontrol)。
假设以下控制层次结构:
Page
> WebControl1
> Label
> WebControl2
> Label
> Button
如果您尝试从WebControl1访问WebControl2上的标签,则
Label lblSearchTerm = (Label)this.Parent.FindControl("lblSearchTerm");
将不起作用,因为this.Parent将返回Page对象,并且您要查找的标签不是Page的子级。相反,它是'WebControl2'的子节点,它本身就是Page的子节点。所以类似下面的内容应该有效:
Label lblSearchTerm = (Label)this.Parent.FindControl("WebControl2").FindControl("lblSearchTerm");
如果标签的所有者是唯一一个修改它的人,那真的会更好,但这完全是另一个讨论。
答案 1 :(得分:1)
为什么不使用this.Page.FindControl? 当然这个没有递归地执行搜索。 但是,您可以使用here上可以找到的代码。