2014-09-29 31 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?,它可能会很有帮助。