2008-12-02 55 views

回答

3

如果将其添加到ContentPlaceHolder中,并且子页面将内容添加到该ContentPlaceHolder中 - 则用户控件将不再显示。 IOW,您添加的控件仅为默认

只要将其添加到ContentPlaceHolder的外部,如果您希望它始终可见即可。

+1

换句话说,放置在母版页上的ContentPlaceHolder内的任何标签都将用作默认内容,但通常它们被内容页面的相应内容标签内的标签取代,除非内容页面省略就是这样一个相应的Content标签。 – Triynko 2011-07-28 18:31:18

0

我并不积极,但我认为您需要使用Page.LoadControl()在运行时正式加载用户控件到页面。

+0

在运行时加载的用户控件需要用LoadControl加载,而不是“new MyUserControl”,否则控件的标签不会被解析,也不会实例化控件的任何子对象。这会导致意外的空控制和恢复视图状态的问题。但无论如何,对于这个特定的问题,我认为这正是Mark Brackett所说的......主页面上的ContentPlaceHolder *内部的东西正在被子页面的相应Content标签中的东西所取代(除非内容页面省略上述相应的标签)。 – Triynko 2011-07-28 18:25:52

0

如果我正确地阅读了这个内容,您在母版页中有一个控件,需要从子页面引用它来更改它的可见性?或者我有错误的方式?

无论如何,这里就是我通常做,在VB.NET中,应该不会太难端口;-)

在aspx页面:

<%@ Reference Control="~/path/to/my/customControl.ascx" %> 

在代码隐藏:

Dim customControl As ASP.customcontrol_ascx = Master.FindControl("customControl") 
If customControl IsNot Nothing Then 
    ... 
End If 
相关问题