I have a newly upgraded application at www.cougarsbaseballsoftball.com that works fine on IE and Chrome on a PC but is failing on Safari and Chrome on iOS8 devices. On pageload it fails producing the message, “The control with ID upnlMessage (an update panel) requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.”
The scriptmanager, a version provided, via the AJAX control toolkit, is in the masterpage:
<form runat="server">
<ajaxToolkit:ToolkitScriptManager ID="defaultscripter" runat="server" EnablePartialRendering ="true" LoadScriptsBeforeUI="true">
<Scripts>
All of the script references go here…
</ajaxToolkit:ToolkitScriptManager>
I have tried the following solutions from related posts but have not found a workable solution:
- Create an App_Browser file to handle requests from iPads: http://stackoverflow.com/questions/14635631/ipad-6-0-1-scriptmanager-supportspartialrendering-asp-net. This did not correct the iOS inter-op issue, but caused no impact to browsers on PCs. This change was rolled-back.
- Create an App_Browser file to handle requests for Safari browsers (presumably across platform): http://stackoverflow.com/questions/25978746/ios-8-safari-8-not-working-with-asp-net-ajax-extensions. This did not correct the iOS inter-op issue. It caused application failure on the PC browsers. This change was rolled-back.
- Add EnablePartialRendering and LoadScritsBeforeUI attributes to the ToolkitScriptManager declaration (see above) - http://stackoverflow.com/questions/13473808/the-scriptmanager-must-appear-before-any-controls-that-need-it - Chris Bint’s point near the bottom. This change was left in the application.
The site is running on a GoDaddy Ultimate site with trust level = full. Although the site is running on framework 4.5.1 the problem can be replicated on 4.5.0. I have not tried to revert to 4.0 due to interdependency issues with the Ajax Control Toolkit. Thank you for your consideration.