2012-04-16 79 views
1

驗證失敗後,我有一個控件(dropdownlist或按鈕)應該導致新的回發問題。我會盡力解釋清楚...asp.net:驗證失敗後禁用回發

我的網頁的目的是在數據庫中保存五個日期。該頁面具有以下控制:

  • 五文本框,每一個包含日期
  • 一個復位按鈕(的CausesValidation =假)在5個文本框
  • 的下拉中的一個以恢復默認日期列表(自動回=真,的CausesValidation =假)的預定義模板適用5日至5個文本框
  • 一個按鈕日期保存到數據庫

可以手動編輯文本框。所以,當我點擊保存按鈕時,如果日期的格式無效,則驗證失敗並保存被中止。問題就在此之後。如果我點擊重置按鈕或在下拉列表中選擇一個項目,則不會觸發回發。如果我再試一次,那麼它就會起作用。第一次驗證失敗後,有沒有辦法讓它工作第一次?我試圖在更改下拉列表中的選擇時停用客戶端上的驗證,但回發仍然不會發生。

這裏是代碼的相關部分:

<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" /> 
+0

「在下拉列表中選擇一個項目,」你selcting同一項目? – Shoban 2012-04-16 15:32:24

+0

下拉列表中的第一項是「選擇模板」。當選擇一個模板時,回發應該發生。在服務器端代碼中,我在處理選擇更改後再次將第一個項目設置爲選定項目。所以,不,在我描述的情況下,我不選擇相同的項目。 – ConnorsFan 2012-04-16 15:35:56

+0

你可以發佈一些示例標記,所以我們可以看到事情是如何設置的? – 2012-04-16 16:38:25

回答

2

正如this post建議,問題來自於呼叫Page_ClientValidate。所以我包這樣的客戶端功能和問題走了:

 
function DoPageClientValidate(validationGroupName) 
{ 
    var result = Page_ClientValidate(validationGroupName); 
    Page_BlockSubmit = false; 
    return result; 
} 
+0

爲我節省了一些時間 - 謝謝 – 2017-06-20 15:56:52