4

我正在使用

__doPostBack(clientIdOfSomeButton, someData);

在 JavaScript 中创建 PostBack。问题是someData事先不知道,并且事件验证开始了,因为我不能ClientScript.RegisterForEventValidation 每个可能的someData.

到目前为止,我只能看到解决这个问题的两种可能性:

  1. 关闭页面的事件验证,出于安全原因不建议这样做。
  2. 不是通过事件验证传递数据,而是通过 JavaScript 将数据放在某个隐藏的文本字段中,然后调用__doPostBack. 太丑了

我错过了第三种选择吗?理想情况下,我想要类似的东西ClientScript.RegisterForEventValidationIgnoreArguments(myButton),但这样的东西不存在......

4

1 回答 1

6

如果 someData 事先不知道,那么服务器如何知道回发的含义?第二个参数是指示事件的类型或有关事件的特定信息,而不是用户输入的值。

我会注册一个自定义参数并以另一种方式传递 someData 。

ClientScript.RegisterForEventValidation(clientIdOfSomeButton, "CustomEvent");

并在客户端

html

<input name="customArgument" type="hidden" value="" />

Javascript

document.forms[0].customArgument = someData;
__doPostBack(clientIdOfSomeButton, '');

然后检索您的价值

if(Request["__EVENTARGUMENT"] == "customArgument")
{
   var customArgument = Request["customArgument"]
}
于 2011-08-17T15:20:59.710 回答