В моем случае Firefox всегда выбирал последний элемент, и это НЕ было
height:100%;
на теле, которое вызывало проблему (поскольку у меня не было ничего подобного).
Это был
position:absolute;
на контейнерном дивизионе.
Надеюсь, это поможет кому-то там ...
Это было очень просто. Я добавлял элементы в раздел управления web.config, как это было предложено Риком Стралом в одном из его постов (:( чтобы получить информацию о посте, вам придется искать на его странице). приятно позволял мне добавлять элементы управления без добавления тега @ Register , но недостатком было то, что дочерние элементы управления в моих элементах управления отображались как пустые! поэтому я просто поместил директиву @ Register на свои страницы и это сработало.
Вы уверены, что MenuContainer
является проблемой? Вы ссылаетесь на obj.State
в первой строке функции Setup
. Если этот obj
имеет значение null, вы получите эту ошибку.
Как упомянутый в ответе JerSchneid , если obj имеет значение null, вы получите эту ошибку. Итак, попробуйте сделать это так -
internal void Setup(MyBusinessObject obj)
{
if(obj == null)
MenuContainer.Visible = false;
else
MenuObject menu = MenuHelper.GetMenu(obj.State);
}
РЕДАКТИРОВАТЬ: Я знаю, что вы получаете ошибку в этой строке, но просто попробуйте сделать это вот так. Или же удалите весь код и просто оставьте строку MenuContainer.Visible = false;
.
Вы разместили следующий код:
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
}
Если MenuContainer
имеет значение null, это, вероятно, имеет какое-то отношение к временной шкале жизненного цикла страницы. Вы вызываете эту функцию до подключения MenuContainer
. Вы можете попробовать вызвать Setup
в функции Page_Load?
Спасибо, 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" %>
вверху страницы решило проблему: -)
Еще раз спасибо!