如果你想要在 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" />
<!
</ContentTemplate>
</asp:UpdatePanel>
然后执行与上述相同的操作:
function setArgAndPostBack() {
$("#<%=hdnData.ClientID%>").val('something you want to put to server');
__doPostBack('UpdatePanel1', '');
}
在第一个场景中,您可以在服务器端获取__EVENTARGUMENT:
String args = Request["__EVENTARGUMENT"]
如果第一种情况不起作用,你可以使用类似下面的方法:
String args = hdnData.Value