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

标签 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>

谢谢

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

伙计们,你们给出的答案不明确或不完整,就像我的“老师”所做的那样。

请问是或否,这是 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>

然后我还添加:

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");
            }               
        }

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

最佳答案

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

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

IsValid 是 ASP.Net Pages 的服务器端验证功能,它验证 WebForm/网页中使用的 Asp.Net 验证控件是否已执行验证,并在服务器端代码中,如果应用了所有验证(即,如果输入了所有必填字段等),则 IsValid 变为 true。

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

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

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

关于c# - ASP.NET 客户端验证与服务器端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39560060/

相关文章:

c# - SQL命令参数必须声明变量错误

c# - 串口通信错误, "The requested resource is in use."

c# - Entity Framework 6 的插入顺序由什么逻辑决定

c# - 程序化按钮单击引发 'System.StackOverflowException' 异常

php - PHP 中 ASP.Net 的 web.sitemap 的最佳替代品

javascript - 当前上下文中不存在文本框

asp.net - 升级到 .net 4.0 后无法加载文件或程序集 'AjaxControlToolkit'

validation - 日期范围验证

jQuery Validate - 默认情况下设置所有字段为必填项?

从 DatePicker 中选取值后,Android setError 验证仍然显示。?