asp:Literal управляют пустым указателем в пользовательском элементе управления

В моем случае Firefox всегда выбирал последний элемент, и это НЕ было

height:100%;

на теле, которое вызывало проблему (поскольку у меня не было ничего подобного).

Это был

position:absolute; 

на контейнерном дивизионе.

Надеюсь, это поможет кому-то там ...

5
задан TheVillageIdiot 21 May 2009 в 03:50
поделиться

6 ответов

Это было очень просто. Я добавлял элементы в раздел управления web.config, как это было предложено Риком Стралом в одном из его постов (:( чтобы получить информацию о посте, вам придется искать на его странице). приятно позволял мне добавлять элементы управления без добавления тега @ Register , но недостатком было то, что дочерние элементы управления в моих элементах управления отображались как пустые! поэтому я просто поместил директиву @ Register на свои страницы и это сработало.

11
ответ дан 18 December 2019 в 09:52
поделиться

Вы уверены, что MenuContainer является проблемой? Вы ссылаетесь на obj.State в первой строке функции Setup . Если этот obj имеет значение null, вы получите эту ошибку.

0
ответ дан 18 December 2019 в 09:52
поделиться

Как упомянутый в ответе JerSchneid , если obj имеет значение null, вы получите эту ошибку. Итак, попробуйте сделать это так -

internal void Setup(MyBusinessObject obj)
{
    if(obj == null)
        MenuContainer.Visible = false;
    else
        MenuObject menu = MenuHelper.GetMenu(obj.State);
}

РЕДАКТИРОВАТЬ: Я знаю, что вы получаете ошибку в этой строке, но просто попробуйте сделать это вот так. Или же удалите весь код и просто оставьте строку MenuContainer.Visible = false; .

0
ответ дан 18 December 2019 в 09:52
поделиться

Вы разместили следующий код:

internal void Setup(MyBusinessObject obj)
{    
    MenuObject menu = MenuHelper.GetMenu(obj.State);    

    if(obj == null)        
        MenuContainer.Visible = false;    //other code
}
  • Если obj имеет значение null, то разыменование obj.State в первой строке вызовет исключение NullReferenceException

  • Если obj не равно null, строка MenuContainer.Visible = false не будет выполняться.

Поэтому я не думаю, что вы публикуете весь соответствующий код.

Если у вас возникнут трудности с отладкой такого рода вещей, попробуйте выполнить код с помощью отладчик или добавление некоторых утверждений в ваш код, которые помогут вам точно увидеть, что происходит:

internal void Setup(MyBusinessObject obj)
{    
    Debug.Assert(obj != null);
    MenuObject menu = MenuHelper.GetMenu(obj.State);    

    Debug.Assert(MenuContainer != null);
    if(obj == null)        
        MenuContainer.Visible = false;    //other code
}
0
ответ дан 18 December 2019 в 09:52
поделиться

Если MenuContainer имеет значение null, это, вероятно, имеет какое-то отношение к временной шкале жизненного цикла страницы. Вы вызываете эту функцию до подключения MenuContainer . Вы можете попробовать вызвать Setup в функции Page_Load?

0
ответ дан 18 December 2019 в 09:52
поделиться

Спасибо, TheVillageIdiot, за отправку ответа на вашу проблему - я столкнулся с точно таким же недоразумением.

Добавление элементов управления через

<add tagPrefix="user" namespace="Frontend.Web.UserControlsAccount" assembly="Frontend.Web" />

в web.config было недостаточно, чтобы его можно было использовать! Я пробовал это вот так на странице:

<user:ucLoginMessages runat="server" ID="Msgs" />

... но это привело бы к явлению, что ни один из элементов управления внутри UserControl не был инициализирован. Только добавление

<%@ Register Src="~/UserControlsAccount/LoginMessages.ascx" TagPrefix="user" TagName="Messages" %>

вверху страницы решило проблему: -)

Еще раз спасибо!

1
ответ дан 18 December 2019 в 09:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: