Why did my AJAX Accordion control stop working?

I really don't even know where to begin. I was trying to do some stuff with a reportviewer in an ASP.Net web app, and the next time I ran my project, the AJAX accordion stopped expanding on a completely different page. I tried re-installing the AJAXControlToolkit using NuGet, but that didn't help. The page shows the accordion panes collapsed, and clicking on them does not cause them to expand.

edit: Ok, so there was a Javascript error on the page, but not one that I know what to do with. The error is coming from scriptresource.axd. The error occurs on every page in my site, and it is:

Sys.ArgumentNullException: Sys.ArgumentNullException: Value cannot be null.
Parameter name: elements [http://localhost:54342/ScriptResource.axd?d=oLn_YfKUbuAZmIp8wPx_MGof0M_lenV-JW2kiI5YDekmr8rZkMCuAuKyOZO06cyZlzhzJQ4BbUMfJShMBgWgM8TnLZXjah8CDfymeaxo44H_TH5anoZTptNOkXlY-ZNjFoS3wUNWvcmBHzSSm5K9ww2&t=252a36c5:4869]

the function in which this error is being thrown:

$addHandler = $type.addHandler = function DomEvent$addHandler(elements, eventName, handler, autoRemove) {
    /// <summary locid="M:J#Sys.UI.DomEvent.addHandler">A cross-browser way to add a DOM event handler to an element.</summary>
    /// <param name="elements">The element or text node, or array of elements or text nodes, that exposes the event. You may also pass a DOM selector or array of DOM selectors.</param>
    /// <param name="eventName" type="String">The name of the event. Do not include the 'on' prefix, for example, 'click' instead of 'onclick'.</param>
    /// <param name="handler" type="Function">The event handler to add.</param>
    /// <param name="autoRemove" type="Boolean" optional="true" mayBeNull="true">Whether the handler should be removed automatically when the element is disposed of, such as when an UpdatePanel refreshes, or Sys.Application.disposeElement is called.</param>
    var e = Function._validateParams(arguments, [
        {name: "elements"},
        {name: "eventName", type: String},
        {name: "handler", type: Function},
        {name: "autoRemove", type: Boolean, mayBeNull: true, optional: true}
    if (e) throw e;

^^ happens here on the last line.

it seems like I'm probably missing something simple like... adding an ID to a control somewhere or something, but I'm really just guessing.

edit 2: I found the culprit. On the master page I had a User Control wherein I had a Modal Popup Extender that had some of its properties (OKButton, CancelButton, etc..) set to controls that didn't exist.


Sorry about the vague question... It boils down to: What would cause an AJAX control to unexpectedly stop working?

and the answer as pointed out in the comments is that it usually comes from a javascript error.

Need Your Help

Why are web apps prevalent for internal corporate apps?

web-applications desktop-application

OK, I realize that people don't like to install stuff on their PCs if they don't have to and that is the primary advantage of web apps over "desktop" that run locally.

Way to debug CORS errors

debugging google-chrome firefox cors

Every once in a while I have to debug cross-origin resource sharing related problems during web-development.