ASP.NET меню рендеринга отличается от vs2008 до vs2010 - PullRequest
0 голосов
/ 23 января 2012

У меня есть веб-сайт, который был изначально создан с использованием vs2008.Мы недавно обновились до vs2010.Когда я преобразовал проекты в проекты vs2010, я сказал НЕ обновлять целевой фреймворк с 3.5 до 4.0.Насколько я могу судить по просмотру всех ссылок и фреймворка проекта, все еще работает на 3.5, но по некоторым причинам мои меню ASP.NET перешли от рендеринга таблиц html к пролетам.Я знаю, что в 4.0 они добавили свойство Menu.RenderingMode и установили его по умолчанию в List вместо Table, но, поскольку все, что я создаю, равно 3.5, оно не только должно отображаться в режиме Table, но я даже не могу вручную установить его в режим Table.Кто-нибудь знает решение этой проблемы (желательно кроме взлома CSS на пролетах или обновления до 4.0)?Я бы просто обновился до 4.0, но мы еще не готовы к этому.Я даже не уверен, что это исправит это, так как это не рендеринг ol или ul с тегами li (список), это рендеринг span.

1 Ответ

4 голосов
/ 24 января 2012

Проблема с отображением меню не связана с переходом с 2008 по 2010 год.Элемент управления asp.menu для asp.net 3.5 неправильно отображается в chrome и safari.

Самый простой способ исправить это как для Safari, так и для Chrome - это включить свой собственный файл браузера в App_Browsers, чтобы отключить этот адаптер.

 <browsers>
  <!-- Disable the Menu Adapter for the Safari browser without changing the root browser file -->
  <browser refID="Safari1Plus">
    <controlAdapters>
      <adapter controlType="System.Web.UI.WebControls.Menu"
               adapterType="" />
    </controlAdapters>
  </browser>
</browsers>

И просто вставьте приведенный ниже код всобытие загрузки страницы или главной страницы (если используется).

if (Request.UserAgent.IndexOf("AppleWebKit") > 0)
 {
   Request.Browser.Adapters.Clear();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...