- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 GetPostBackEventReference 时遇到了一些回发问题。这是场景:
我有一个 javascript 模态弹出对话框,在这个模态对话框中有一个用于选择内容的按钮(这不是 asp:button 控件)
当单击此 javascript 对话框 HTML 按钮时,它将通过 javascript: eval() 方法调用 MS AJAX 网络服务调用。并且此 MS AJAX Web 服务调用是动态生成的。所以代码是这样的:
var serviceCall = svcCall + "(" + parameters + ")"; //dynamically generate the MS AJAX web service call here
eval(serviceCall);
//use eval to trigger the MS AJAX web service call
大家可能都知道,MS AJAX web服务完成后,可以定义一个回调函数来处理完成:
function OnComplete(result, userContext, methodName) {
//force to call postback manually
eval($(userContext[0]).val());
//close the javascript dialog here
}
正如我之前提到的,MS AJAX 网络服务调用是动态构建的,当构建 MS AJAX 网络服务调用时,它将传递一个包含回发值的 userContext(即“__doPostBack(' ctl00$ContentPlaceHolder1$btnSelectUser','')",因此当调用 javascript eval() 时,它模拟 asp:button 单击回发。
userContext[0] 基本上持有 asp:hidden 字段的 ClientID,隐藏字段的值在 Page_Load 事件期间设置:
protected void Page_Load(object sender, EventArgs e)
{
btnSelectUser.ValidationGroup = "popupSelect";
btnSelectUser.CausesValidation = false;
this.hdnBtnPostback.Value = Page.ClientScript.GetPostBackEventReference(btnSelectUser, string.Empty, false);
}
如您所见,这就是我如何使用 GetPostBackEventReference 将 asp:button(即 btnSelectUser)的点击事件绑定(bind)到 asp:hiddenfield,并设置 registerForEventValidation 参数为 false。我也曾尝试使用不同的 ValidationGroup 并将 CausesValidation 设置为 false,但没有希望。 :(
总而言之,我将 asp:button 的 Click PostBackEventReference(即 __doPostback(....))绑定(bind)到 asp:hidden 字段的 Value 属性,并使用 javascript eval() 来评估这个隐藏的字段的值,以便手动触发回发。
附注btnSelectUser 是一个 asp:button 控件,用于调出 javascript 模式对话框。
好的,问题来了:
在同一页面中,有一些 asp:validator,例如并且,当然,当页面遇到错误时,此验证器和标注将显示给用户。例如当用户没有填写任何内容并提交表单时,ValidatorCalloutExtender 将显示一个气球并告诉用户。想象一下,此时其中一个气球/验证器 CalloutExtender 出现在您的屏幕顶部。
然后单击 btnSelectUser (asp:button) 以显示 javascript 模式对话框,并在对话框中添加一些用户,一旦您点击此模式对话框内的 SELECT 按钮,就会触发 MS AJAX Web 服务,如下所示上面提到的,一旦此 Web 服务完成,它就会 eval() asp:hidden 字段的值(即 __doPostback(...))......并手动执行回发。
但是,由于 validatorCalloutExtender 气球已经显示,它无法以这种方式触发回发,但是当我关闭气球/validatorCalloutExtender 时,使用 eval() 的手动回发工作正常。更奇怪的是,当显示气球时,我第一次单击此模式对话框中的 SELECT 按钮时,它不会触发回发,但是,如果我再次做同样的事情(即打开 javascript 对话框,并且选择一些用户,然后再次单击 SELECT 按钮)。它能够进行手动回发....我不明白为什么第一次不起作用。
这真的让我发疯,希望这里的任何人都能提供帮助,我们将不胜感激。非常感谢你们。 :)
祝你有美好的一天。希望尽快收到大家的来信。
最佳答案
当您调用 __doPostBack(eventTarget, eventArgument)
时,会触发表单提交:
如果 WebForm_OnSubmit();
返回 true,则此帖子将继续。
WebForm_OnSubmit
结果取决于 ValidatorOnSubmit
结果,而后者又取决于
ValidatorCommonOnSubmit
结果如果 Page_ValidationActive == true
。
现在如果你还在我身边,如下面的函数:
function ValidatorCommonOnSubmit() {
Page_InvalidControlToBeFocused = null;
var result = !Page_BlockSubmit;
if ((typeof(window.event) != "undefined") && (window.event != null)) {
window.event.returnValue = result;
}
Page_BlockSubmit = false;
return result;
}
ValidatorCommonOnSubmit
的结果取决于Page_BlockSubmit
,所以唯一阻止你回发的是Page_BlockSubmit == true
,它与处理验证标注。
我无法模拟您的情况,但如果您可以发布完整的代码示例,它将帮助我追踪问题。
关于c# - 客户端验证通过 JavaScript eval() 手动回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2400897/
在 JSF2 应用程序中遇到验证属性的问题时,有两种主要方法。 使用 Annotation 在 ManagedBean 上定义验证 @ManagedBean public class MyBean {
我想实现一个不常见的功能,我认为 jquery 验证插件将是最好的方法(如果您在没有插件的情况下建议和回答,我们也会欢迎)。我想在用户在输入字段中输入正确的单词后立即隐藏表单。我试过这个: $("
我有几个下拉菜单(类名为month_dropdown),并且下拉菜单的数量不是恒定的。我怎样才能为它们实现 NotEqual 验证。我正在使用 jQuery 验证插件。 这就是我写的 - jQuery
我设法制作了这个网址验证代码并且它起作用了。但我面临着一个问题。我认为 stackoverflow 是获得解决方案的最佳场所。 function url_followers(){ var url=do
我目前正在使用后端服务,该服务允许用户在客户端应用程序上使用 Google Games 库登录。 用户可以通过他们的 gplay ID 向我们发送信息,以便登录或恢复旧帐户。用户向我们发送以下内容,包
我正在尝试验证输入以查看它是否是有效的 IP 地址(可能是部分地址)。 可接受的输入:172、172.112、172.112.113、172.112.113.114 Not Acceptable 输入
我从 Mongoose 验证中得到这条消息: 'Validator failed for path phone with value ``' 这不应该发生,因为不需要电话。 这是我的模型架构: var
我一直在尝试使用Python-LDAP (版本 2.4.19)在 MacOS X 10.9.5 和 Python 2.7.9 下 我想在调用 .start_tls_s() 后验证与给定 LDAP 服务
我正在处理一个仅与 IE6 兼容的旧 javascript 项目(抱歉...),我想仅在 VS 2017 中禁用此项目的 ESLint/CSLint/Javascript 验证/CSS 验证。 我知道
我正在寻找一种方法来验证 Spring 命令 bean 中的 java.lang.Double 字段的最大值和最小值(一个值必须位于给定的值范围之间),例如, public final class W
我正在尝试在 springfuse(JavaEE 6 + Spring Framework (针对 Jetty、Tomcat、JBoss 等)) 和 maven 的帮助下构建我的 webapps 工作
我试图在我们的项目中使用 scalaz 验证,但遇到了以下情况: def rate(username: String, params: Map[String, String]): Validation
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
我有一个表单,人们可以单击并向表单添加字段,并且我需要让它在单击时验证这些字段中的值。 假设我单击它两次并获取 2 个独立的字段集,我需要旋转 % 以确保它在保存时等于 100。 我已放入此函数以使其
在我的页面中有一个选项可以创建新的日期字段输入框。用户可以根据需要创建尽可能多的“截止日期”和“起始日期”框。就像, 日期_to1 || date_from1 日期到2 ||日期_from2 date
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
有没有办法在动态字段上使用 jquery 验证表单。 我想将其设置为必填字段 我正在使用 Jsp 动态创建表单字段。 喜欢 等等...... 我想使用必需的表单字段验证此表单字段。 最佳答
嗨,任何人都可以通过提供 JavaScript 代码来帮助我验证用户名文本框不应包含数字,它只能包含一个字符。 最佳答案 使用正则表达式: (\d)+ 如果找到匹配项,则字符串中就有一个数字。 关于J
我有两个输入字段holidayDate和Description(id=tags) $(document).ready(function() {
我遇到了这个问题,这些验证从电子邮件验证部分开始就停止工作。 我只是不明白为什么即使经过几天的观察,只是想知道是否有人可以在这里指出我的错误? Javascript部分: function valid
我是一名优秀的程序员,十分优秀!