September 2012 Release of the Ajax Control Toolkit

I’m excited to announce the September 2012 release of the Ajax Control Toolkit! This is the first release of the Ajax Control Toolkit which supports the .NET 4.5 framework. We also continue to support ASP.NET 3.5 and ASP.NET 4.0.

With this release, we’ve made several important bug fixes. The Superexpert team focused on fixing the highest voted issues associated with the CascadingDropDown control. I’ve created a list of these bug fixes later in this blog post.

You can download the latest release of the Ajax Control Toolkit by visiting the following page at CodePlex:

Alternatively, you can install the latest version of the Ajax Control Toolkit using NuGet by firing off the following command from the Package Manager Console:

Install-Package AjaxControlToolkit

Using the Ajax Control Toolkit with ASP.NET 4.5

Let me walk through the steps for using the Ajax Control Toolkit with ASP.NET 4.5. First, I’ll create a new ASP.NET 4.5 website with Visual Studio 2012. I’ll create the new website with the ASP.NET Web Forms Application template:


When you create a new ASP.NET 4.5 site with the ASP.NET Web Forms Application template, you get a starter website. If you run the site, then you get a page with default content:


Let me show you how you can add the Ajax Control Toolkit Calendar control to the homepage of this starter site. The first step is to use NuGet to install the Ajax Control Toolkit. Right-click the References folder in the Solution Explorer window and select the menu option Manage NuGet Packages.

In the Manage NuGet Packages dialog, use the search box to search for the Ajax Control Toolkit (enter “AjaxControlToolkit”). After you find it, click the Install button to add the Ajax Control Toolkit to your project.


That’s all you have to do to install the Ajax Control Toolkit! Now we are ready to start using the Ajax Control Toolkit controls.

Open the default.aspx page so we can modify the contents of the page. Erase everything contained in the Content control with the ID of BodyContent. After erasing the content, declare the following two controls:

<asp:TextBox ID="vacationDate" runat="server" /> 



   runat="server" />

The first control is a standard ASP.NET TextBox control and the second control is an Ajax Control Toolkit Calendar control.

You should get intellisense as you type out the Ajax Control Toolkit Calendar control. If you don’t, then close and re-open the Default.aspx page.

Now, let’s run our app. Hit the F5 button or select Debug, Start Debugging from the Visual Studio menu. You will get the error message “MsAjaxBundle is not a valid script name”.


Don’t despair! We need to update the Master Page so it uses the ToolkitScriptManager instead of the default ScriptManager.

Open the Site.Master file and find where the ScriptManager is declared. The ScriptManager should look like this:

<asp:ScriptManager runat="server">
        <%--Framework Scripts--%>
        <asp:ScriptReference Name="MsAjaxBundle" />
        <asp:ScriptReference Name="jquery" />
        <asp:ScriptReference Name="jquery.ui.combined" />
        <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
        <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
        <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
        <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
        <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
        <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
        <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
        <asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
        <asp:ScriptReference Name="WebFormsBundle" />
        <%--Site Scripts--%>


We need to make three changes to the ScriptManager:

1) We need to replace the asp:ScriptManager with the ajaxToolkit:ToolkitScriptManager

2) We need to remove the MsAjaxBundle bundle from the ScriptReferences

3) We need to remove the Assembly=”System.Web” attributes from the ScriptReferences

After you make these three changes, the ToolkitScriptManager should looks like this:

<ajaxToolkit:ToolkitScriptManager runat="server">
        <%--Framework Scripts--%>
        <asp:ScriptReference Name="jquery" />
        <asp:ScriptReference Name="jquery.ui.combined" />
        <asp:ScriptReference Name="WebForms.js"  Path="~/Scripts/WebForms/WebForms.js" />
        <asp:ScriptReference Name="WebUIValidation.js"  Path="~/Scripts/WebForms/WebUIValidation.js" />
        <asp:ScriptReference Name="MenuStandards.js"  Path="~/Scripts/WebForms/MenuStandards.js" />
        <asp:ScriptReference Name="GridView.js"  Path="~/Scripts/WebForms/GridView.js" />
        <asp:ScriptReference Name="DetailsView.js"  Path="~/Scripts/WebForms/DetailsView.js" />
        <asp:ScriptReference Name="TreeView.js"  Path="~/Scripts/WebForms/TreeView.js" />
        <asp:ScriptReference Name="WebParts.js"  Path="~/Scripts/WebForms/WebParts.js" />
        <asp:ScriptReference Name="Focus.js"  Path="~/Scripts/WebForms/Focus.js" />
        <asp:ScriptReference Name="WebFormsBundle" />
        <%--Site Scripts--%>


After we make these changes, the app should run successfully. You’ll get a page which contains a text field. When you click inside the text field, a popup calendar is displayed.


Ajax Control Toolkit and jQuery

You might have noticed that the ScriptManager includes a reference to jQuery by default. We did not remove that reference when we converted the ScriptManager to a ToolkitScriptManager. You can use the Ajax Control Toolkit and jQuery side-by-side.

Here’s how you can modify the Default.aspx page so that it contains two popup calendars. The first popup calendar is created with the Ajax Control Toolkit and the second popup calendar is created with jQuery:

<asp:TextBox ID="vacationDate" runat="server" />
    runat="server" />

<input id="birthDate" />

Before you can start using jQuery UI plugins, you need to complete one more step. You need to add the jQuery UI themes bundle to the HEAD of the Site.Master page like this:

<head runat="server">
    <meta charset="utf-8" />
    <title><%: Page.Title %> - My ASP.NET Application</title>
    <asp:PlaceHolder runat="server">     
          <%: Scripts.Render("~/bundles/modernizr") %>
    <webopt:BundleReference runat="server" Path="~/Content/css" /> 
    <webopt:BundleReference runat="server" Path="~/Content/themes/base/css" /> 
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <meta name="viewport" content="width=device-width" />
    <asp:ContentPlaceHolder runat="server" ID="HeadContent" />

The markup above includes a reference to the jQuery UI themes bundle:

<webopt:BundleReference runat="server" Path="~/Content/themes/base/css" />

Now that we have made these changes, we can use the Ajax Control Toolkit and jQuery at the same time. When you run your app, you get two popup calendars. When you click in the first text field, the Ajax Control Toolkit calendar appears. When you click in the second text field, the jQuery UI popup calendar appears:


Bug Fixes in this Release

We made several important bug fixes with this release of the Ajax Control Toolkit and integrated several Pull Requests contributed by the community. Our primary focus during this sprint was fixing issues with the CascadingDropDown control.

We fixed the following issues associated with the CascadingDropDown:

· 9490 – Don’t disable dropdowns in CascadingDropDown

· 14223 – CascadingDropDown Reset or Setting SelectedValue from WebMethod

· 12189 – CascadingDropDown not obeying disabled state of DropDownList

· 22942 – CascadingDropDown infinite loop (with solution)

· 8671 – CascadingDropdown options is null or undefined

· 14407 – CascadingDropDown: populated client event happens too often

· 17148 – CascadingDropDown – Add “UseHttpGet” property

· 10221 – No NotNull check in CascadingDropDown

· 12228 – Provide property for case-insensitive DefaultValue lookup in CascadingDropdown

We also fixed the following two issues which are not directly related to the CascadingDropDown control:

· 27108 – CalendarExtender: Bug when selecting December shifts to January.

· 27041 – Input controls with HTML5 types do not post back in Firefox, Chrome, Safari

Finally, we integrated several Pull Requests submitted by the community (Thank you community!):

· Added French localized resources for the AjaxFileUpload

· Resolved an issue which prevented the AjaxFileUpload control from working with pages that require query string variables.

· Extended the AjaxFileUploadEventArgs class to include the current file index in the queue and the total number of files in the queue.

· Fixed an issue with TabContainer and TabPanel which caused the OnActiveTabChanged event to fire too often.


I’m happy to see the Ajax Control Toolkit move forward into the brave new world of ASP.NET 4.5! In this latest release, we focused on ensuring that the Ajax Control Toolkit works smoothly with ASP.NET 4.5 applications. We also fixed the highest voted bugs associated with the CascadingDropDown control and integrated several Pull Request submitted by the community.

Once again, I want to thank the Superexpert team for their hard work on this release!


  1. Marcus says:

    CodePlex work items are still showing the status of these fixes as “proposed”?

  2. @Marcus — You are too fast for us 🙂 We just posted the new release 5 minutes ago…we are closing the issues now.

  3. Andy says:

    Please put a link to this on the Ajax Control Toolkit page! It took me all afternoon to find this, and I had some problems with it. It would be pretty helpful to have toolkit install instructions for each version of Visual Studio as I see lots of other people struggling with this and this was the only solution!

    -If rebuilding project still does not give you intellisense, close VS2012 and reopen the project

  4. Chi says:

    I’ve been working on developing and testing web application with web accessibility for Section 508 Compliant.

    After downloading and installing updated Ajax Control kit program, I added AsyncFileupload control to the web form page. It includes “Select” button. I was trying to click the button by pressing “Enter” keyboard. It did not work at all time.

    Second, I added HtmlEidtorExtender control for text-box control. I used AssoicatedControlID property to associate a label control with the text-box control. JAWS, as known “Job Access with Speech”, is a computer screen reader program for Microsoft windows that allows blind and visually impaired users to read screen with a text-speech output. When I tested them, JAWS was not able to read it due to unlabeled field since I set AssoicatedContorlID. Without HtmlEditorextender Control, JAWS was able to read it very well.

    Please advise or assist me with these issues.

    Your help is very appreciated very well.


    • @Chi — This is great feedback. Can you open issues for these two 508 issues with the AsyncFileUpload and HtmlEditorExtender at the CodePlex site? Navigate to and click the Issue Tracker tab. Click the Create Issue link to create a new issue. Our team tracks and prioritizes work by the number of votes which each issue receives — so it is important to get the issues in the system so we are aware of them.

  5. George says:

    Hi, is the September 2012 source code of the Toolkit available for download? I need it because I have a asp .net 64-bit project, and need to compile the Toolkit in 64-bit also. (BTW, since most people are moving to 64-bit platforms, are you guys planning to offer 64-bit binaries of the Toolkit?) Thanks.

    • Hi George — no, we are not planning on doing a special 64-bit build. We already have our hands full with the 3.5, 4.0, and 4.5 builds 🙂 We are working on getting the source code updated at CodePlex — give us another few days.