ASP.NET UpdatePanel和Javascript __dopostback

|| 我正在从javascript调用部分回发,如下所示:
function GetPolicyClick()
   {\"__dopostback(\'UpdatePanel1\', \'PostCall\')\";}
它完成了我需要的1/2的工作。它确实为我的UpdatePanel调用了部分回发。 现在是棘手的部分。我试图(以某种方式)在后面的代码中引用__dopostback的第二个参数。这不起作用:
Private Sub UpdatePanel1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles UpdatePanel1.Load

    Dim MyArg As String = Request(\"__EVENTARGUMENT\")

End Sub
我只是得到一个空字符串。 当然,我尝试做的事情可能是完全错误的(就像我尝试使用ASP所做的其他事情一样)。我怀疑我的后台代码是从页面而不是面板中获取事件参数,但我真的不知道,有什么想法吗?     
已邀请:
        如果要在_EVENTARGUMENT中放入一些值,则应在发送_doPostBack(\'UpdatePanel1 \',\'\')发送表单之前使用JavaScript进行此操作,因为__EVENTTARGET是隐藏字段,并且在html文档中它看起来像这样:
<input type=\"hidden\" value=\"\" id=\"__EVENTARGUMENT\" name=\"__EVENTARGUMENT\">
我建议您做这样的事情:
function setArgAndPostBack() {
    var arg = document.getElementById(\'__EVENTARGUMENT\');
    var arg = document.getElementById(\"__EVENTARGUMENT\");
    arg.value = \'something you want to put to server\';
    __doPostBack(\'UpdatePanel1\', \'\');
}
如果您使用jQuery,它将更短:
function setArgAndPostBack() {
    $(\"#__EVENTARGUMENT\").val(\'something you want to put to server\');
    __doPostBack(\'UpdatePanel1\', \'\');
}
如果它不起作用,我建议您在“更新”面板中放置一个隐藏字段:
<asp:UpdatePanel runat=\"server\" ID=\"UpdatePanel1\">
    <ContentTemplate>
        <asp:HiddenField ID=\"hdnData\" value=\"\" runat=\"server\" />
        <!-- your content goes here -->
    </ContentTemplate>
</asp:UpdatePanel>
然后执行与上述相同的工作:
function setArgAndPostBack() {
    //Here hidden field is filled with your data
    $(\"#<%=hdnData.ClientID%>\").val(\'something you want to put to server\');
    __doPostBack(\'UpdatePanel1\', \'\');
}
在第一种情况下,您可以在服务器端获得__EVENTARGUMENT:
String args = Request[\"__EVENTARGUMENT\"];
如果第一种情况不起作用,则可以使用以下方法:
String args = hdnData.Value;//This works even in Page_Load function.
    

要回复问题请先登录注册