【问题标题】:Server-side validation in ASP.NET 2.0ASP.NET 2.0 中的服务器端验证
【发布时间】:2010-06-01 11:32:44
【问题描述】:

我的应用程序使用 C# 的 ASP.NET 2.0。我有一个带有正则表达式 ^[0-9]*(\\,)?[0-9]?[0-9]?$ 的正则表达式验证器,现在我的客户不希望在客户端进行此验证,而是在按钮单击时,即服务器端。

EX:我必须检查 txtPrice 文本框的值

请告诉我如何将这个正则表达式验证放在服务器端。

提前致谢。

【问题讨论】:

  • 我认为它是客户端和服务器端,应该有一个开关来关闭它在客户端。

标签: asp.net .net regex validation server-side


【解决方案1】:

您可以使用可以链接到服务器端事件的 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】:

    无论您是否还启用客户端验证,该控件都将始终在服务器端进行验证。但是你必须记住在接受回发之前检查Page.IsValid 的值...

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        使用基于ValidatorBase 的服务器端控件的客户端验证仅在PostBack 上进行,即在任何服务器端按钮/链接按钮点击时。

        所以你可以使用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
        }
        

        【讨论】:

        • 但是我不能把 放在客户端,我必须在服务器端做同样的验证。
        • @Zerotoinfinite:你的意思是 - 不能放入标记?为什么不? (只是有趣)。你也可以使用CustomValidator - 查看我更新的帖子。
        • 看起来您编辑了答案只是为了匹配@webdude 在您之前回答的内容...
        • 我已经在客户端单击该按钮时使用了 javascript 函数,在这种情况下,我的 regularExpressionValidator 不起作用,同样我必须将它放在服务器端。
        • @Darksider:不,我不知道。他的回答也很少,是 C# 和 VB.NET 语法 o__O 的混合体
        猜你喜欢
        • 1970-01-01
        • 2011-01-01
        • 1970-01-01
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-26
        相关资源
        最近更新 更多