Содержимое UIWebview и IPhone не выполняет обратную передачу (проблемы с возможностями браузера ASP.NET)

У меня есть простая страница, ее структура выглядит следующим образом (псевдокод):

<aspx page>
    <ascx control>
        <asp:dropdownlist id="dd1" autoPostback=true />
        <asp:dropdownlist id="dd2" />
    </ascx control>
</aspx page>

В ЛЮБОМ настольном браузере dd1 отправляет ответ и запускается событие сервера "SelectedIndexChanged". Однако в сафари IPhone или веб-просмотре IPhone обратная передача не выполняется. Я знаю это, потому что индикатор сетевой активности не отображается, и я подключил отладчик к сайту, который перехватывает все события на стороне сервера, и он никогда не срабатывает. Иногда, примерно раз в 2 часа, постбэк на айфоне УЖЕ работает, но крайне редко и с перебоями.

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

Javascript включен в настройках сафари.

Достаточно просто, верно? Я пытаюсь понять, как отлаживать ошибки javascript в веб-просмотре, но мне было интересно, знает ли кто-нибудь, что за странность создала такое поведение.


person Chuck Pinkert    schedule 01.09.2011    source источник


Ответы (1)


arrow_upward
7
arrow_downward

Пользовательский агент IPhone UIWebView не распознавался ASP.NET 4.0, поэтому asp.net использовался по умолчанию, версия страницы нижнего уровня, которая не включала javascript. Пользовательский агент веб-просмотра iphones был:

Mozilla/5.0 (iPhone; U; ЦП iPhone OS 4_3_5, как Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, например, Gecko) Mobile/8L1

Чтобы этого не произошло, я изменил свойство «ClientTarget» страницы на «UpLevel», которое обходит asp.net, пытающийся выяснить возможности браузера, и просто обслуживает версию javascript «Uplevel» и все такое.

Решение на моей странице Page_Load:

Me.ClientTarget = "уровень выше"

or

this.ClientTarget = "уровень выше";

person Chuck Pinkert    schedule 07.09.2011
comment
Это своего рода хак. Лучше исправить App_Browsers или обновить глобальный список браузеров. См. обходной путь, опубликованный pravav rastogi (работает для Microsoft) по адресу connect.microsoft.com/VisualStudio/ обратная связь/детали/631438 - person Brian; 08.10.2012
comment
В комментариях по этой ссылке кто-то упоминает, что исправление будет выпущено в следующем выпуске среды выполнения asp.net... так это исправлено в .net 4.5? - person Chuck Pinkert; 09.10.2012
comment
Извините, но я не знаю. Вы можете попробовать установить его и посмотреть, обновлена ​​ли копия файла браузера на машине. Запустите diff на \Windows\Microsoft.NET\Framework[X1]\v[X2]\Config\Browsers\*. - person Brian; 09.10.2012