SPK*_*der 1 asp.net validation postback webforms
我有一个带有几个文本框,按钮和其他控件的asp.net Web表单.其中一个按钮应该触发某些文本框中内容的验证.这样可以正常工作,但如果验证失败,则会阻止页面的所有后续回发.修复无效值可以消除错误消息,但仍然不会发生回发.
验证在AJAX UpdatePanel中进行.我不确定这是否重要.
我很高兴解决方法对您来说没问题,但是为了让其他人登陆此页面,禁用客户端验证远非可接受的解决方案.所以这里:
为什么它只在UpdatePanel周围发生时,我仍然不清楚,但是:
正如其他人所提到的,您遇到的问题很可能是因为不成功的验证尝试阻止了进一步的回发.
另请参阅:为什么我的表单在验证后不会发回?
有一个变量被调用Page_BlockSubmit,当客户端验证失败时,该变量设置为true:
function Page_ClientValidate(validationGroup) {
....
Page_BlockSubmit = !Page_IsValid;
return Page_IsValid;
}
Run Code Online (Sandbox Code Playgroud)
因此,当__doPostBack发生是由于,比方说,一个部分OnSelectedIndexChanged的DropDownList,有这样的检查:
function ValidatorCommonOnSubmit() {
....
var result = !Page_BlockSubmit; /* read the value */
....
Page_BlockSubmit = false; /* reset it */
return result;
}
Run Code Online (Sandbox Code Playgroud)
哪个会第一次阻止,但随后清除该标志,因此下一次回发尝试应该有效.
解决办法,在我的情况下,为DropDownList的OnSelectedIndexChanged事件,是有添加到其客户端的一个片段onchange事件:
<asp:DropDownList runat="server" ID="SomeDropDownList" OnSelectedIndexChanged="AlwaysDoSomething"
onchange="resetValidationState(this);">
....
</asp:DropDownList>
<script type="text/javascript">
function resetValidationState() {
// clear any postback blocks, which occur after validation fails:
window.Page_BlockSubmit = false;
}
</script>
Run Code Online (Sandbox Code Playgroud)
你可能会把这个片段放到onchange自己身上.
| 归档时间: |
|
| 查看次数: |
9797 次 |
| 最近记录: |