【问题标题】:asp.net: Postback disabled after validation failedasp.net:验证失败后禁用回发
【发布时间】:2012-04-27 22:56:44
【问题描述】:

验证失败后,我的控件(下拉列表或按钮)出现问题,应该会导致新的回发。我会尽量解释清楚...

我的页面的目的是在数据库中保存五个日期。该页面具有以下控件:

  • 五个文本框,每个文本框都包含一个日期
  • 重置按钮 (CausesValidation=false) 用于在 5 个文本框之一中恢复默认日期
  • 将 5 个日期应用于 5 个文本框的预定义模板的下拉列表(AutoPostback=true,CausesValidation=false)
  • 将日期保存到数据库的按钮

文本框可以手动编辑。因此,当我单击“保存”按钮时,如果日期格式无效,则验证失败并中止保存。问题就在那之后。如果我单击“重置”按钮或在下拉列表中选择一个项目,则不会触发回发。如果我再试一次,那么它会起作用。有没有办法让它在第一次验证失败后第一次工作?在更改下拉列表中的选择时,我尝试在客户端停用验证,但回发仍然没有发生。

以下是代码的相关部分:

<asp:DropDownList ID="cboScheduleTemplates" runat="server" AutoPostBack="true" CausesValidation="false" />
<asp:TextBox ID="txtDateDelivery1" runat="server" />
<asp:RegularExpressionValidator ID="revDateDelivery1" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDateDelivery1" Text="*" />
<asp:TextBox ID="txtDateYearbookQuantity" runat="server" />
<asp:RegularExpressionValidator ID="revDateYearbookQuantity" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDateYearbookQuantity" Text="*" />
<asp:TextBox ID="txtDateDelivery2" runat="server" />
<asp:RegularExpressionValidator ID="revDateDelivery2" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDateDelivery2" Text="*" />
<asp:TextBox ID="txtDatePersonalizations" runat="server" />
<asp:RegularExpressionValidator ID="revDatePersonalizations" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDatePersonalizations" Text="*" />
<asp:TextBox ID="txtDateDelivery3" runat="server" />
<asp:Button ID="btnSetDefaultDelivery3" runat="server" ValidationGroup="Schedule" CausesValidation="false" />
<asp:RegularExpressionValidator ID="revDateDelivery3" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDateDelivery3" Text="*" />
<asp:Button ID="btnSaveSchedule" runat="server" CssClass="btnAction" Text="Save" ValidationGroup="Schedule" />
<asp:ValidationSummary ID="validationSummarySchedule" runat="server" ValidationGroup="Schedule" DisplayMode="List" />

【问题讨论】:

  • “在下拉列表中选择一个项目”,您选择的是同一个项目吗?
  • 下拉列表中的第一项是“选择模板”。选择模板后,应进行回发。在服务器端代码中,我在处理选择更改后再次将第一项设置为选定项。所以,不,在我描述的场景中,我没有选择相同的项目。
  • 您能否发布一些示例标记,以便我们了解如何设置?

标签: asp.net validation postback


【解决方案1】:

正如this post 中所建议的,问题来自对 Page_ClientValidate 的调用。所以我像这样包装了客户端功能,问题就消失了:

函数 DoPageClientValidate(validationGroupName) { var 结果 = Page_ClientValidate(validationGroupName); Page_BlockSubmit = false; 返回结果; }

【讨论】:

    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2023-03-15
    • 2020-05-04
    相关资源
    最近更新 更多