У меня есть базовый пользовательский элемент управления (WC1), который наследуется от WebUserControl, и дочерний пользовательский элемент управления (WC2), который наследуется от WC1. Я добавил textBox и метку в WC1 в представлении дизайна, а не в коде позади.
Но все серверные элементы управления, которые я поместил в WC1, являются нулевыми и дают исключение нулевого указателя. Я пытался получить доступ к textBox и метке в различных событиях, но все они нулевые.
Кто-нибудь знает, что здесь пошло не так? Спасибо.
Действия по воспроизведению ошибки:
- создать пользовательский веб-элемент управления под названием WC1, добавив новый элемент в VS
- добавил элемент управления textBox и сервера меток в WC1 в режиме конструктора VS и поместил код позади: var value = txetBox.Text;
- создал еще один пользовательский веб-элемент управления под названием WC2, добавив новый элемент в VS и изменив его базовый класс на WC1 в своем коде за
- создать веб-страницу, добавив новый элемент в vs, и перетащить WC2 в представление дизайна страницы.
- запустите страницу, после чего вы увидите исключение для кода в WC1
код:
WC1:
code behind:
public partial class WC1: System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
страница:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WC1.ascx.cs" Inherits="WebApplication1.WC1" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
WC2:
код позади:
public partial class WC2: WC1
{ var txt = TextBox1.Text}
страница:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WC2.ascx.cs" Inherits="WebApplication1.WC2" %>
Подводя итог моему вопросу:
в этом случае могут быть созданы элементы управления веб-сервером WC1? или пользовательский элемент управления, наследуемый от другого пользовательского элемента управления и элементов веб-сервера родительского пользовательского элемента управления, может быть передан его дочерним элементам, не беспокоясь о макете?
Хорошо, я проверил, если я не добавлю элемент управления в коде WC1, он никогда не будет создан.