Проблемы с рендерингом ASP.NET Menu в Chrome и Safari
Недавно столкнулся со следующей проблемой: стандартный ASP.NET элемент управления Menu корректно отображается в IE и FireFox, но ведет себя совершенно непонятно в Chrome и Safari. Схожесть проблемы именно в этой паре браузеров объясняется тем, что оба они работают на движке WebKit.
Суть проблемы в том, что в Ghrome и Safari вместо текста "XXX" отображают "XXX Expand XXX".
IE8:
FireFox:
Ghrome:
Safari:
Решением является переопределение типа адаптера для конкретных браузеров с помощью .browser файла.
Читаем MSDN:
adapter определяет сопоставление между серверным веб-элементом управления ASP.NET и адаптером, который осуществляет его отображение в используемом обозревателе. Например, в следующем определении для обозревателя NokiaMobileBrowserRainbow из файла обозревателя Nokia указывается, что серверные элементы управления Menu будут адаптироваться к обозревателю при помощи класса адаптера элемента управления MenuAdapter:
<controlAdapters markupTextWriterType="System.Web.UI.XhtmlTextWriter" ><br /> <adapter<br /> controlType="System.Web.UI.WebControls.Menu"<br /> adapterType="<b>System.Web.UI.WebControls.Adapters.MenuAdapter</b>"><br /> </adapter><br /> </controlAdapters>
Элемент adapter не содержит дочерних элементов.
Итак, нам необходимо добавить в проект свой .browser файл и прописать такой код:
После этого меню отображается во всех браузерах правильно.
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |