Ok, I think I solved it. In a hidden div, I added an empty asp:UpdatePanel with Conditional mode. When I create the dynamic docks, I add each dock to the UpdatePanel as a AsyncPostBackTrigger. This performs the postback as expected using Ajax without a full page load.
I won't be able to update content, but I don't need to update content. I needed to just be able to track the user changes to the docks for later creating.
AsyncPostBackTrigger widgetTrigger = new AsyncPostBackTrigger ();
widgetTrigger.ControlID = currentWidget.WidgetId;