Поиск элемента управления контентом никогда не будет работать, потому что всякий раз, когда используется главная страница, его элементы управления вставляются в страницу, а элементы управления страницы (в пределах элемента управления контентом) добавляются в соответствующие заполнители содержимого. Возможно, вам следует сначала попытаться найти заполнители контента, а затем попытаться найти элемент управления.
Однако, лучшим дизайном было бы создание класса базовой страницы вместе с конкретной главной страницей для управления этим взаимодействием. Например,
У вас будет главная страница (скажем, с именем TwoPanelMaster), которая будет использовать главную страницу вашего сайта и использовать макет с двумя панелями вместе с кнопкой отправки. Идея в том, что у вас есть стандартный макет, который контролируется с помощью главной страницы.
<asp:Panel runat="server" ID="InputPanel">
<asp:ContentPlaceholder runat="server" ID="Input"></asp:ContentPlaceholder>
</asp:Panel>
<asp:Panel runat="Server" ID="Message">
<!-- put the UI for displaying message -->
</asp:Panel>
<asp:Button runat="server" ID="Submit" />
Предоставьте методы в главном коде, чтобы получить доступ к кнопке отправки, показать / скрыть панели и т. Д.
Теперь создайте класс базовой страницы, который будет кодировать основное взаимодействие -
public abstract class InputPage : System.Web.UI.Page
{
protected override OnLoad(EventArgs e)
{
var master = this.Master as TwoPanelMaster;
master.GetSubmitButton().OnClick += Submit_Click();
}
private void Submit_Click(object sender, EventArgs e)
{
ValidateInput();
}
protected virtual void ValidateInput()
{
// do some common code (if any)
string message;
if (OnValidateInput(out message))
{
// validation succesful, show success message
var master = this.Master as TwoPanelMaster;
master.ShowMessage(message); // this method should hide the input panel and display message panel.
}
}
// pages should provide implementation of this method
protected abstract bool OnValidateInput(out string successMessage);
}
Это общий подход, который дает вам больший контроль и устраняет зависимость, так что на ваших страницах должны быть панели с определенным идентификатором и т. Д.