Ce contrôle permet de communiquer entre JavaScript et ASP.net par l'intermédiaire d'un UpdatePanel.
Il donne seulement la possibilité à JavaScript de faire un postback sans devoir passer par un composant autre tel un LinkButton.
Voici un exemple d'utilisation :
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Literal runat="server" ID="litTest" />
<cs:PostBackControl runat="server" ID="pbcTest" OnCallBack="pbcTest_CallBack"/>
</ContentTemplate>
</asp:UpdatePanel>
<button id="btn1">Je suis un button</button>
<cs:Script runat="server">
window.pageLoad = function(){
$addHandler($get('btn1'), 'click', function(e){
<%=pbcTest.GetCallBackFunction("'premier test'") %>
e.preventDefault();
});
}
</cs:Script>
On peut également passer des paramètres en client et serveur en JSON grâce au sérialiseur JSON intégré à ASP.net Ajax :
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Literal runat="server" ID="litTest" />
<cs:PostBackControl runat="server" ID="pbcTest" OnCallBack="pbcTest_CallBack" DeserializeCallBackArgument="true"/>
</ContentTemplate>
</asp:UpdatePanel>
<button id="btn1">Je suis un button</button>
<cs:Script runat="server">
window.pageLoad = function(){
$addHandler($get('btn1'), 'click', function(e){
var o = {prop1:'value1',prop2:'value2'};
var s = Sys.Serialization.JavaScriptSerializer.serialize(o);
<%=pbcTest.GetCallBackFunction("s")%>
e.preventDefault();
});
}
</cs:Script>
protected void pbcTest_CallBack(object sender, CallBackEventArgs e)
{
litTest.Text = ((Dictionary<String, Object>)e.CallBackArgument)["prop1"].ToString();
}