事件验证:允许 __doPostBack 用于一个控件和*任何*参数

发布于 2024-11-29 19:37:14 字数 534 浏览 1 评论 0原文

我正在使用

__doPostBack(clientIdOfSomeButton, someData);

JavaScript 创建 PostBack。问题是 someData 事先未知,并且事件验证启动,因为我无法 ClientScript.RegisterForEventValidation 每个 的可能值一些数据

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

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

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

I'm using

__doPostBack(clientIdOfSomeButton, someData);

to create a PostBack in JavaScript. The problem is that someData is not known in advance, and event validation kicks in because I cannot ClientScript.RegisterForEventValidation every possible value of someData.

So far, I can see only two possibilities to solve this problem:

  1. Turn off event validation for the page, which is not recommended for security reasons.
  2. Instead of passing the data via event validation, put the data in some hidden text field via JavaScript and then call __doPostBack. That's ugly.

Is there some third option that I've missed? Ideally, I'd like something like ClientScript.RegisterForEventValidationIgnoreArguments(myButton), but something like this does not exist...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九厘米的零° 2024-12-06 19:37:14

如果事先不知道 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"]
}

If someData is not known in advance then how does the server know the meaning of the postback? The second argument is to indicate the type of event or specific information concerning the event, not a user inputted value.

I would register for a custom argument and pass the someData another way.

ClientScript.RegisterForEventValidation(clientIdOfSomeButton, "CustomEvent");

And on the client

Html

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

Javascript

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

then retrieve your value

if(Request["__EVENTARGUMENT"] == "customArgument")
{
   var customArgument = Request["customArgument"]
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文