Проблемы с рендерингом ASP.NET Menu в Chrome и Safari

среда, 13 мая 2009, Александр Краковецкий

Недавно столкнулся со следующей проблемой: стандартный 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 Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии