代码之家  ›  专栏  ›  技术社区  ›  Zerotoinfinity HLGEM

ASP.NET 2.0中的服务器端验证

  •  1
  • Zerotoinfinity HLGEM  · 技术社区  · 14 年前

    ^[0-9]*(\\,)?[0-9]?[0-9]?$ ,现在我的客户端不希望在客户端进行此验证,而是单击按钮,即服务器端。

    例:我得检查一下 txtPrice 文本框

    提前谢谢。

    4 回复  |  直到 12 年前
        1
  •  2
  •   WebDude    14 年前

    您可以使用CustomValidator链接到服务器端事件:

    <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" OnServerValidate="CustomValidator1_Validate"></asp:CustomValidator>
    

    protected void CustomValidator1_Validate (object source, ServerValidateEventArgs argss)
    {}
    

    记住用鼠标点击来包装你的提交按钮

    if(IsValid) {}
    

    以确保所有验证程序都得到尊重

        2
  •  1
  •   David M    14 年前

    控件将始终在服务器端验证,而不管是否也启用客户端验证。但是你必须记住检查 Page.IsValid

    如前所述,可以使用属性关闭客户端验证。

        3
  •  1
  •   abatishchev Marc Gravell    14 年前

    尝试添加 EnableClientScript="false" 到验证器。

        4
  •  -1
  •   abatishchev Marc Gravell    14 年前

    使用基于的服务器端控件进行客户端验证 ValidatorBase 只在 PostBack i、 e.在任何服务器端按钮/链接上单击按钮。

    所以你可以用 RegularExpressionValidator

    <asp:TextBox runat="server" ID="txtPrice" />
    <asp:RegularExpressionValidator runat="server" ControlToValidate="txtPrice" ValidationExpression="^[0-9]*(\\,)?[0-9]?[0-9]?$" ErrorMessage="Input is incorrect" />
    

    你也可以用 CustomValidator :

    <asp:TextBox runat="server" ID="txtPrice" />
    <asp:CustomValidator runat="server" ControlToValidate="txtPrice" ErrorMessage="Input is incorrect" OnServerValidate="CustomValidator1_ServerValidate" />
    
    protected void CustomValidator1_ServerValidate(object sender, ServerValidateEventArgs e)
    {
        // use e.Value to validate and set e.IsValid
        // it's different depending on control to validate.
        // for custom controls you can set it using ValidationPropertyAttribute
    }