It was around 2004/2005 and Visual Studio 2005, when Microsoft made their first steps to support AJAX like functionality for ASP.NET, if I remember right. They did so by releasing a CTP called Atlas. This was soon replaced by ASP.NET AJAX. And later one with .NET 3.0 those basic AJAX functionality (Controls like: UpdatePanel, ScriptManager,..) didn’t need a separate install anymore.
Customers complained that certain functionalities of the Web-Application is broken when they use IE10.
Now IE 10 is different(better) than previous versions of Internet Explorer. It embraces standards a lot better and goes the route of HTML5 CSS3.
The project I currently work on is still using ASP.NET 2.0, and … you guess correct Microsoft.Web.Atlas.
Atlas does have some special treatment for Internet Explorer browsers, which now unfortunately is not appropriate anymore for Internet Explorer 10.
To solve this, I have to somehow replace Atlas by a newer approach -that doesn’t break IE10-, without moving the solution to use ASP.NET 3.0 or later.
First I downloaded the latest installer for ASP.NET AJAX, which is ASP.NET AJAX 1.0. Running the installer on my Windows 7(64-bit), it couldn’t install and rolled back the installation.
I have only Visual Studio 2008, 2010 and 2012 on my machine, so my first guess was I needed Visual Studio 2005 to install it, but there are these templates for Visual Studio 2008, that proofed to me it should be possible to install AJAX 1.0 even without any Visual Studio installed.
I tried to run the installer for AJAX 1.0 again, this time in compatibility mode, and it did complete without problems this time.
As I wanted to reference/replace the DLL the same way that Visual Studio would do, I installed the templates for VS2008, then noticed that I had only the part of VS2008 that comes with SQL Server (for Analysis/Integration/Reporting Services). So I decided to download and install Visual Studio 2008 Web Developer Express Edition, because we had no more 2008 Version at the office. After some binging, I found an official Microsoft site which still features the 2008 download. But unfortunately no templates for ASP.NET 2.0 showed up there, only 3.5 templates. And searching for online templates does open the help.
No need to worry though. After I restarted VS2010, I could add the reference to system.web.extensions, and from the Toolbox I could drag the controls which appeared there now, onto a page. This did register the component/namespace correctly on the page and I could apply it for all pages where it was necessary. The line for registering looks like that:
<% @Registerassembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"namespace="System.Web.UI"tagprefix="asp" %>
Of course I had to fix some issues in the code, since Atlas and AJAX 1.0 are not 100% same:
– Warning: Control ‘scriptmanager1’ of type ‘ScriptManager’ must be placed inside a form tag with runat=server.
This should be easy to resolve (if your page has a <form>-tag).
– Triggers within UpdatePanel’s changed:
Old: <atlas:UpdatePanel> … <Triggers> <atlas:ControlEventTrigger …> </Triggers> </atlas:UpdatePanel>
New: <asp:UpdatePanel> … <Triggers> <asp:AsyncPostBackTrigger … > </Triggers> </asp:UpdatePanel>
– Property EnableScriptComponents of ScriptManager does no longer exist:
– Property Mode of UpdatePanel was renamed to UpdateMode.
Possible UpdateModes are Always(which is the default) and Conditional.
Note: the UpdateProgress control uses now a setting called DisplayAfter, we can set it to “0” to immediately display the image or information we display during the busy time. Also we have to specify an UpdatePanel that will display the UpdateProgress.
In order to remove Atlas completely one has to adjust the web.config’s as well. Especially the hook to *.asmx and those catch-all configuration line. Plus removing the controls
After those changes, almost* all worked well again, even in IE10.
Yes almost all worked well. Turned out that some controls in the AtlasControlToolkit can not exist without Atlas. Therefore to still use those controls, one has to upgrade the ControlToolkit too.
I did get the latest version from codeplex so I could reference that instead.