У меня есть элемент управления ascx;
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LanguageSelect.ascx.cs" Inherits="MyNamespace.LanguageSelect" %>
с кодом позади:
protected void Page_Load(object sender, EventArgs e)
{
Languages = GetSiteLanguagesService();
if (Languages.Count > 1)
{
//null reference exception here!! languageDropdown is null!
LanguageDropdown.Visible = true;
LanguageDropdown.DataTextField = "DisplayName";
LanguageDropdown.DataValueField = "LangUrl";
LanguageDropdown.DataSource = Languages ;
LanguageDropdown.DataBind();
}
}
внутри другого элемента управления:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SomePage.ascx.cs" Inherits="myNamespace.SomePage" %>
<div id="main" role="main">
<myTag:LanguageSelect id="langSelect" runat="server" />
<div class="section columns">
<div class="main-column"> ....
С помощью отладчика я нажал на page_load LanguageSelect
, но выпадающий список нулевой!если я добавляю выпадающий элемент управления в разметке, я думал, что он должен существовать всегда, в этом случае он ведет себя так, как будто это просто динамический элемент управления.
Теперь элемент управления SomePage отображается вHTML, но этот в myTag
не отображается вообще, не имеет значения, если я оберну раскрывающийся список в div, div также не будет отображаться !!
Если я поставлюточка останова в SomePage
page_load, там будет элемент управления langSelect (не ноль), но он сам по себе имеет значение LanguageDropdown