ASP.NET UpdatePanel et Javascript __dopostback

J'appelle un postback partiel de javascript comme suit:

function GetPolicyClick() {"__dopostback('UpdatePanel1', 'PostCall')";} 

Il fait 1/2 de ce dont j'ai besoin. Il appelle un postback partiel, juste pour mon UpdatePanel.

Maintenant, la partie délicate. J'essaie (en quelque sorte) de faire référence au deuxième argument de __dopostback dans mon code derrière. Cela ne fonctionne pas:

 Private Sub UpdatePanel1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles UpdatePanel1.Load Dim MyArg As String = Request("__EVENTARGUMENT") End Sub 

Je viens d'obtenir une chaîne vide.

Bien sûr, ce que j'essaye de faire peut être complètement faux (comme pour tout le reste, j'essaie de faire avec ASP). Je soupçonne que mon code s'accroche à l'argument de l'événement de la page au lieu du panneau, mais je ne sais vraiment pas, des idées?

Si vous souhaitez ajouter de la valeur à l'intérieur de _ EVENTARGUMENT, vous devriez le faire avec javascript avant d'envoyer le formulaire par _doPostBack ('UpdatePanel1', '') car __EVENTTARGET est un champ caché et dans votre document html il ressemble à ceci:

 <input type="hidden" value="" id="__EVENTARGUMENT" name="__EVENTARGUMENT"> 

Je vous recommande de faire quelque chose comme ceci:

 function setArgAndPostBack() { var arg = document.getElementById('__EVENTARGUMENT'); var arg = document.getElementById("__EVENTARGUMENT"); arg.value = 'something you want to put to server'; __doPostBack('UpdatePanel1', ''); } 

Si vous utilisez jQuery, il serait plus court:

 function setArgAndPostBack() { $("#__EVENTARGUMENT").val('something you want to put to server'); __doPostBack('UpdatePanel1', ''); } 

Si cela ne fonctionne pas, j'aimerais vous suggérer de mettre un champ caché dans le panneau Mise à jour:

 <asp:UpdatePanel runat="server" ID="UpdatePanel1"> <ContentTemplate> <asp:HiddenField ID="hdnData" value="" runat="server" /> <!-- your content goes here --> </ContentTemplate> </asp:UpdatePanel> 

Et puis faites le même travail comme ci-dessus:

 function setArgAndPostBack() { //Here hidden field is filled with your data $("#<%=hdnData.ClientID%>").val('something you want to put to server'); __doPostBack('UpdatePanel1', ''); } 

Dans le premier scénario, vous pouvez obtenir __EVENTARGUMENT du côté du serveur:

 String args = Request["__EVENTARGUMENT"]; 

Si le premier scénario ne fonctionne pas, vous pouvez utiliser quelque chose comme ça:

 String args = hdnData.Value;//This works even in Page_Load function.