2016-01-23 115 views
1

我所做的一切this page告诉我这样做,但它不工作,我看到人们张贴有关这个问题,被告知要加一个必填字段校验器,我已经做了那仍然不起作用。ASP.NET自定义的验证工作不

这里的客户端部分

   <asp:CustomValidator 
        ID="CustomValidator1" 
        runat="server" 
        ControlToValidate="TextBoxUsername" 
        ErrorMessage="Username already exists" 
        OnServerValidate="CustomValidator1_ServerValidate" 
        ValidateEmptyText="True" <!--tried without this line--> 
        ValidationGroup="form"> <!--tried without this line--> 
       </asp:CustomValidator> 

这里是C#服务器端代码

 protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args){ 
      args.IsValid = false; 
     } 

看起来很简单吧?它应该不断出现,对吧? 好,它只出现在开头,然后永远地消失,这是因为我在Page_Load()方法这一行,但我也有它的button_click()方法。

Page.Validate(); 
+0

那么你的提交按钮是什么样子? – NikolaiDante

+0

'' – Macromeda

+0

''protected void Button1_Click(object sender,EventArgs e){ Page .Validate(); //其他的代码行,不是小鬼 }' – Macromeda

回答

2

首先,去除验证组,并添加Text

<asp:CustomValidator 
    ID="CustomValidator1" 
    runat="server" 
    ControlToValidate="TextBoxUsername" 
    ErrorMessage="Username already exists" 
    Text="Username already exists" 
    OnServerValidate="CustomValidator1_ServerValidate" 
    ValidateEmptyText="True"> 
</asp:CustomValidator> 

ErrorMessage将在ValidationSummary控制显示和Text应显示在验证器。

更新按钮导致验证(我相信真正反正是默认的,但让是明确的):

然后检查页面点击后有效,Page.Validate并不需要是称为它会自动为CauseValidation

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (Page.IsValid) 
    { 
     // Do Cool Stuff 
    } 
} 

此外,检查时,砸在点击方法中设置断点,你没有任何客户端的接线(如ClientValidationFunction="somejsfunction"上验证),所以当你通过服务器端让你只会打这个代码验证。

+0

同样的问题: 在button_click事件处理程序 主代码我有'Page.Validate();如果(Page.IsValid){//我的代码在这里}}'是的,当我点击它时,它会在加载页面后重新显示,但在所有其他必需的字段验证程序消失之后,您会明白我在说什么? – Macromeda

+0

请参阅编辑,您可能会被其他_client方validation_在表单的其余部分阻止获取_server端validation_。 – NikolaiDante

+0

如果您使用[mcve](http:// stackoverflow。com/help/mcve)我会在早上(这里午夜)在我的IDE中的测试应用程序中启动它,并在早上进行更详细的检查。 – NikolaiDante