I have a MasterPage (MyBoxx.Master) referencing 2 usercontrols :
<%@ Master Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"MyBoxx.master.cs\" Inherits=\"
Well, I found several working solutions... and I think I understood how/why it worked earlier
1) it seems that compilation has a role to play in this. If I comment the line, compile the site, and then try to add the line again, the type uxHeader is "available" in VS and I can compile the site back again with the line uncommented...
2) As first solution is obviously not a long-term solution, I found that referencing the user-control (without actually using it of course) in the content page aspx would do the trick :
<%@ Register TagPrefix="uc1" TagName="Header" Src="Header.ascx" %>
3) I also tried this one, which I find the cleanest... In the master page, expose a public property :
public uxHeader PageHeader
{
get
{
return Header1;//Header1 is the id of the userControl dropped in masterpage
}
}
In the content page aspx, I then put :
<%@ MasterType VirtualPath="~/DBoxx.master"%>
then, still in the content page, but in the codebehind, and after a compilation of the site, I can use :
this.Master.PageHeader.ShowSearch = false;
Hope this will help the ones searching for help on the subject in the future. I see this is a recurent question
Depending on how you have your User Control coded you may or may not be able to access all it's properties/methods when exposing it to the master page as a master page property..
Here is a solution that works:
In your master page you need to register your user control (.ascx) and place it on the master within the form tag.
Register the User Control
<%@ Register Src="~/Controls/MyUserControl.ascx" TagPrefix="uc" TagName="MyUserControl" %>
Add the User Control to the Master Page
<form id="frmMain" runat="server">
<uc:MyUserControl runat="server" ID="ucMyUserControl" />
<div id="main-wrapper">
<div id="main">...
Now for the content page, you must create a reference in each of the content pages that use the master page for which you want to use the control.
Add the Reference in the content Page
<%@ Reference Control="~/Controls/MyUserControl.ascx" %>
Now you can setup a public variable at the page level and access it's properties/methods
Partial Class MyPage
Inherits System.Web.UI.Page Public usrCtrl As MyUserControl Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Master.FindControl("ucMyUserControl") IsNot Nothing Then usrCtrl = CType(Master.FindControl("ucMyUserControl"), MyUserControl) usrCtrl.ExecMyMethod() End If ...