Die Arbeit mit ASP.NET AJAX ist eine prima Sache. Mit relativ geringem Aufwand lassen sich AJAX Funktionalitäten in einer Website integrieren. Auf der "AJAX-enabled" aspx-Seite wird im Normalfall innerhalb des Forms der ScriptManager registriert und schon ist auf dieser Seite z.B. das UpdatePanel anwendbar: <asp:ScriptManager ID="ScriptManager1" runat="server" />. Bisher bin ich davon ausgegangen, dass bei Verwendung des AJAX ControlToolKits ACT mit all seinen schönen Extender Controls statt des herkömmlichen ScriptManagers der zugehörige AjaxControlToolKitScriptManager eingebunden werden muss: <ajaxToolkit:ToolkitScriptManager ID="ScriptManager1" runat="server" />.
Probleme sind aufgetreten, als ich auf einer aspx-Seite mit dem ACT-ScriptManager ein Usercontrol eingebunden habe, welches einen ScriptManagerProxy benötigte, da auf einer aspx-Seite nur EIN ScriptManager erlaubt ist. Es gibt jedoch keinen ScriptManagerProxy für das ACT. Ein befreundeter Entwickler gab mir den Tipp, doch statt des ACT ScriptManagers den herkömmlichen ScriptManager wieder einzubinden. Der ACT ScriptManager wird vom ScriptManager abgeleitet, so dürften hier keine Probleme zu erwarten sein. Nun ist es auch bei der Arbeit mit einer Masterpage möglich, mit dem ScriptManager, dem ScriptManagerProxy und mit dem ACT zu arbeiten.
Mögliche Einbindung des ScriptManagers im Codebehind der Masterpage:
/// <summary>
/// preInit event
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected override void OnPreInit(EventArgs e)
{
//adds a global scriptManager to the form in masterpage
//to use it for Ajax in ascx controls via scriptManagerProxy
if (ScriptManager.GetCurrent(this.Page) == null)
{
ScriptManager Manager = new ScriptManager();
Manager.EnablePartialRendering = true;
foreach (Control c in this.Controls)
{
if (c is HtmlForm)
{
c.Controls.AddAt(0, Manager);
}
}
}
base.OnPreInit(e);
}