加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.net – 事件验证:允许__doPostBack用于一个控件和* any *参数

发布时间:2020-12-16 06:46:16 所属栏目:asp.Net 来源:网络整理
导读:我正在使用 __doPostBack(clientIdOfSomeButton,someData); 在JavaScript中创建PostBack.问题是someData不是事先知道的,并且事件验证启动,因为我不能ClientScript.RegisterForEventValidation someData的每个可能的值. 到目前为止,我只能看到解决这个问题的
我正在使用

__doPostBack(clientIdOfSomeButton,someData);

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

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

>关闭页面的事件验证,出于安全原因不建议这样做.
>不是通过事件验证传递数据,而是通过JavaScript将数据放入一些隐藏的文本字段中,然后调用__doPostBack.那很难看.

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读