ASP.NET 客户端与服务器端验证

Pro*_*er7 2 c# asp.net validation webforms

我经常从学校的“讲师”那里得到不正确的信息。

对于 ASP.NET Web 应用程序,工具箱中的验证器(如 CompareValidator、RangeValidator、RequiredFieldValidator 等)是否被视为服务器端验证?

因为我们还添加了一个 jQuery NuGet 包,它在用户选项卡时提供实时验证,就像用户在需要数字时键入字母一样。

对于 C# 中的 WPF,我创建了一个验证器类或使用一个库并通过静态方法以这种方式检查验证。我也应该在 ASP.NET 中这样做吗?或者 RequiredFieldValidators 等是否足以进行服务器端验证?

下面是一个例子:

<div class="form-group">
    <label class="control-label col-sm-4">Length:</label>
    <div class="col-sm-4">
        <asp:TextBox ID="txtLength" runat="server" CssClass="form-control" MaxLength="15"></asp:TextBox>
    </div>
    <div class="col-sm-4">
        <asp:RequiredFieldValidator ID="rfvLength" runat="server" ErrorMessage="Length is required" 
            ControlToValidate="txtLength" CssClass="error" Display="Dynamic" SetFocusOnError="True"></asp:RequiredFieldValidator>
        <asp:RangeValidator ID="rngLength" runat="server" ErrorMessage="Must be between .01 and 10,000" 
            MaximumValue="10000" MinimumValue=".01" ControlToValidate="txtLength" CssClass="error" Display="Dynamic" 
            SetFocusOnError="True" Type="Double"></asp:RangeValidator>
    </div>                            
</div>
Run Code Online (Sandbox Code Playgroud)

谢谢

******编辑*****

伙计们,你们给出的答案不清楚或不完整,就像我的“导师”一样。

请是或否,这是 ASP.NET 中的服务器端验证吗?

<div class="form-group">
    <label class="control-label col-sm-4">Length:</label>
    <div class="col-sm-4">
        <asp:TextBox ID="txtLength" runat="server" CssClass="form-control" MaxLength="15"></asp:TextBox>
    </div>
    <div class="col-sm-4">
        <asp:RequiredFieldValidator ID="rfvLength" runat="server" ErrorMessage="Length is required" 
            ControlToValidate="txtLength" CssClass="error" Display="Dynamic" SetFocusOnError="True"></asp:RequiredFieldValidator>
        <asp:RangeValidator ID="rngLength" runat="server" ErrorMessage="Must be between .01 and 10,000" 
            MaximumValue="10000" MinimumValue=".01" ControlToValidate="txtLength" CssClass="error" Display="Dynamic" 
            SetFocusOnError="True" Type="Double"></asp:RangeValidator>
    </div>                            
</div>
Run Code Online (Sandbox Code Playgroud)

然后我还补充说:

protected void btnCalculate_Click(object sender, EventArgs e)
        {
            if (IsValid)
            {
                double length = Convert.ToDouble(txtLength.Text);
                double width = Convert.ToDouble(txtWidth.Text);

                Rectangle r = new Rectangle(length, width);

                txtArea.Text = r.Area().ToString("f");
                txtPerimeter.Text = r.Perimeter().ToString("f");
                txtDiagonal.Text = r.Diagonal().ToString("f");
            }               
        }
Run Code Online (Sandbox Code Playgroud)

这作为 ASP.NET 中的服务器端验证是否正确,我是否正确使用了 if (IsValid) 部分?

Gau*_*vKP 5

您正在混合ASP.NET 验证控制以及客户端和服务器端验证之间的差异。

当ASP.NET 页面呈现验证控件RequiredFieldValidatorRangeValidator等时,它会自动创建客户端JavaScript 函数来在浏览器中执行验证,即客户端验证。

IsValid是 ASP.Net Pages 的服务器端验证功能,它通过它验证 WebForm/WebPage 中使用的 Asp.Net 验证控件是否已执行验证,以及在服务器端代码中,是否应用了所有验证(即,如果所有验证都是强制性的)字段等被输入)然后IsValid变为真。

请注意,这不是强制放入IsValid服务器端代码,因为创建的 JavaScript 函数将在客户端进行所需的验证。

因此,基本上 ASP.NET 验证控件有助于从客户端和服务器端验证 ASP.NET 页面,并且与纯 JavaScript 验证相比具有优势。

另一个示例是JQuery代码(JavaScript 库),它可用于进行客户端验证,例如验证文本框的值是否为空。同时,JQuery 可用于通过对服务器端 Web 服务方法的 AJAX 调用来进行服务器端验证。