2014-09-29 60 views
0

客戶端驗證正常工作。我禁用了客戶端,看看它是否也適用於服務器端,但失敗。即使輸入文本無效,編譯器也會到達'SaveData'。 沒有更新面板。 我應該如何解決這個問題。服務器端驗證不起作用 - ASP.NET

ASPX:

<asp:TextBox ID="txtDept" runat="server" pattern="[a-z A-Z]*"></asp:TextBox> 

<asp:RegularExpressionValidator 
    ID="revDept" 
    runat="server" 
    ValidationExpression="^[a-zA-Z\s]{1,50}$" 
    ControlToValidate="txtDept" 
    Display="Dynamic" 
    ErrorMessage="Only alphabets and spaces are allowed." 
    EnableClientScript="false"> 
</asp:RegularExpressionValidator> 

C#:

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     if (Page.IsValid) 
     { 
      SaveData(); 
     }   
    } 
+4

在服務器端顯式調用Page.Validate()。 – 2014-09-29 06:32:13

+2

參考: http://stackoverflow.com/questions/13762467/how-does-page-isvalid-work?answertab=votes#tab-top – 2014-09-29 06:34:55

+2

此外,嘗試從文本框中刪除模式。你可能遇到與兩者的模式衝突(並且它們不是等價的) – 2014-09-29 06:36:26

回答

1

您需要可以對提交按鈕激活 「的CausesValidation」(我們不能在你的代碼檢查它是否是這樣),或者在測試IsValid屬性之前顯式調用「Page.Validate()」。

也請看看How does Page.IsValid work?,它可能會很有幫助。