горизонтальное меню asp.net отображается как вертикальный список - PullRequest
4 голосов
/ 02 февраля 2012

http://i44.tinypic.com/5ureav.png

Когда мои страницы иногда отображаются, горизонтальное меню отображается так. Почему?

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" 
    EnableViewState="false" IncludeStyleBlock="false" 
    Orientation="Horizontal" ClientIDMode="AutoID">
    <Items></Items>
</asp:Menu>

Обычно это происходит, когда страница загружает много данных, но когда данные заканчивают загрузку, она никогда не возвращается в горизонтальное положение.

Тестирование с IE 7, 8 и 9 и Chrome.

Я просмотрел интернет и обнаружил, что некоторые люди говорят, что это z-index, но настройка не помогла.

Я использую «инструменты разработчика» в IE8 для дальнейшего устранения неполадок и нашел некоторые вызовы JavaScript, которые не увенчались успехом. Понятия не имею, что они имеют в виду.

<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$MainContent$tsmgrEmployees', 'aspnetForm', ['tctl00$MainContent$uPanelEmployees',''], ['ctl00$MainContent$btnClear','','ctl00$MainContent$txtEUID','','ctl00$MainContent$txtFirstName','','ctl00$MainContent$txtLastName',''], [], 90, 'ctl00');
//]]>
</script>

Произошла ошибка

'Sys.WebForms.PageRequestManager' равен нулю или не является объектом

<script type='text/javascript'>new Sys.WebForms.Menu({ element: 'ctl00_NavigationMenu', disappearAfter: 500, orientation: 'horizontal', tabIndex: 0, disabled: false });</script>

Произошла ошибка

'Sys.Webforms.Menu' имеет значение null или не является объектом

Я считаю, что все оставшиеся ошибки - это каскады из этих двух. Как вы думаете, я должен заменить библиотеки jscript на обновленные? Возможно, это связано с браузером, так как я использую IE8 (не в режиме совместимости).

Еще одна странная информация, которая может помочь, заключается в том, что когда я собираю решение в Visual Studio 2010 для WinXP Pro в своей среде разработки, оно работает нормально, но когда я публикую его на сервере (IIS 7.5, Server 2008 R2), оно брейки. Сначала я подумал, что это может быть задержка данных, но строка подключения на сервере должна быть быстрее, чем строка подключения в моей среде разработки. Сервер использует Localhost в качестве цели, моя рабочая станция использует путь к серверу ... поэтому я не думаю, что это задержка данных.

Ответы [ 3 ]

5 голосов
/ 23 июля 2012

У меня была такая же проблема. Я решил это, сделав RenderingMode = "Table" под элементом управления asp: Menu.

Пример:

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" RenderingMode="Table">
        <StaticMenuItemStyle CssClass="menuitem" />
        <DynamicMenuItemStyle CssClass="menuitem" />

Вам придется немного поиграться с css (удалив атрибуты 'ul' и 'li' в вашем css).

Создание

 <StaticMenuItemStyle CssClass="menuitem" />
 <DynamicMenuItemStyle CssClass="menuitem" />

В управлении меню (как показано выше) также помогает с форматированием CSS.

По какой-то причине список меню создает эту проблему. Это как минимум обходной путь.

2 голосов
/ 22 августа 2012

У меня была такая же проблема. Оказалось, что это вызвано следующей строкой в ​​моем файле Global.asax:

RouteTable.Routes.MapPageRoute("", "{*dummy}", "~/Default.aspx")

Я хотел отправить пользователей, запрашивающих несуществующие маршруты, на страницу Default.aspx. Очевидно, это имеет нежелательный побочный эффект: браузер не может найти JS-файл, необходимый для горизонтального отображения меню.

2 голосов
/ 02 февраля 2012

Начиная с Visual Studio 2010 / .NET 4.0, ASP:Menu s отображаются в виде маркированных списков (ul), а не table s.У вас должен быть CSS, влияющий на ul s, который переопределяет ожидаемый дизайн меню.

...