2 つのユーザー コントロールを参照する MasterPage (MyBoxx.Master) があります。
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MyBoxx.master.cs" Inherits="MyBoxxMaster" %>
<%@ Register TagPrefix="uc1" TagName="Header" Src="Header.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Footer" Src="Footer.ascx" %>
私のユーザーコントロール「ヘッダー」には、とりわけ検索ボックスが含まれています。一部のページにアクセスするときに、この検索ボックスを非表示にしたい。したがって、ブール値のプロパティをユーザー コントロールに追加し、ユーザー コントロールをレンダリングするときにこのプロパティを使用して、検索ボックスを表示するかどうかを決定します。
public partial class uxHeader : System.Web.UI.UserControl
{
bool _showSearch = true;
public bool ShowSearch
{
get { return _showSearch; }
set { _showSearch = value; }
}
[...]
protected void Page_Load(object sender, EventArgs e)
{
[...]
searchBox.Visible = _showSearch;
}
}
次に、コンテンツ ページからこの「ShowSearch」プロパティにアクセスしようとします。
((uxHeader)Page.Master.FindControl("Header1")).ShowSearch = false;
問題は、コンパイルしようとすると次のエラーが発生することです。
Error 15 The type or namespace name 'uxHeader' could not be found (are you missing a using directive or an assembly reference?)
問題は、以前にリリースされた製品バージョンで動作するため、ある時点で動作してコンパイルできると確信していることです。しかし、今は同じサイト内の別のものに変更を加えているため、コンパイルできません。
SO に関するさまざまな投稿から、コンテンツ ページ aspx に次の行を追加してみました。
<%@ MasterType VirtualPath="~/MyBoxx.master"%>
<%@ Reference VirtualPath="~/MyBoxx.master" %>
成功せずに!ページのライフサイクルに関するいくつかの回答も見ましたが、実行時のバグではなく、コンパイル時にエラーが発生するため、これはここでは問題になりません。
これを完全に修正する方法について誰かアドバイスがあれば、大いに感謝します。
ありがとう !