为什么我的表单会回发,尽管有“必填字段验证不匹配”?
问:
我的页面上有一个 RequiredFieldValidator
,当我单击(回发触发
)按钮时,它会进行回发
,尽管该字段未输入必填项! 这种行为的原因是什么?
我的.aspx:
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="btn_Search" />
</Triggers>
<ContentTemplate>
<asp:ImageButton ID="btn_Search" runat="server" ImageUrl="~/Images/save.png"
OnClick="btn_Search_Click" OnClientClick="return postbackButtonClick();" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:DropDownList ID="ddl_department" runat="server" Width="200px" OnSelectedIndexChanged="ddl_department_SelectedIndexChanged"
AutoPostBack="True">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="ddl_department"
Display="Dynamic" ErrorMessage="*" InitialValue="-1"></asp:RequiredFieldValidator>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddl_study" runat="server" Width="200px">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="ddl_study"
Display="Dynamic" ErrorMessage="*" InitialValue="-1"></asp:RequiredFieldValidator>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddl_department" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<script type="text/javascript">
var updateProgress = null;
function postbackButtonClick() {
updateProgress = $find("<%= UpdateProgress1.ClientID %>");
window.setTimeout("updateProgress.set_visible(true)", updateProgress.get_displayAfter());
return true;
}
</script>
Q:
I have a RequiredFieldValidator
on my page ,when i click the button which is (postback triggered
) it makes the postback
, although the field which is required wasn't entered !
What's the reason to this behavior?
My .aspx:
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="btn_Search" />
</Triggers>
<ContentTemplate>
<asp:ImageButton ID="btn_Search" runat="server" ImageUrl="~/Images/save.png"
OnClick="btn_Search_Click" OnClientClick="return postbackButtonClick();" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:DropDownList ID="ddl_department" runat="server" Width="200px" OnSelectedIndexChanged="ddl_department_SelectedIndexChanged"
AutoPostBack="True">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="ddl_department"
Display="Dynamic" ErrorMessage="*" InitialValue="-1"></asp:RequiredFieldValidator>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddl_study" runat="server" Width="200px">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="ddl_study"
Display="Dynamic" ErrorMessage="*" InitialValue="-1"></asp:RequiredFieldValidator>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddl_department" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<script type="text/javascript">
var updateProgress = null;
function postbackButtonClick() {
updateProgress = $find("<%= UpdateProgress1.ClientID %>");
window.setTimeout("updateProgress.set_visible(true)", updateProgress.get_displayAfter());
return true;
}
</script>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从 LinkButton 的
OnClientClick
属性值中删除 return 子句:OnClientClick="postbackButtonClick()"
并重写postbackButtonClick
如下:Remove return clause from LinkButton's
OnClientClick
property value:OnClientClick="postbackButtonClick()"
and rewritepostbackButtonClick
as below: