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

本文关键字:服务器端 验证 客户端 NET ASP | 更新日期: 2023-09-27 18:07:45

我经常从学校的"指导老师"那里得到不正确的信息。

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验证控制以及客户端和服务器端验证的区别。

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

IsValid是ASP的服务器端验证特性。Net页面,它通过这些页面来验证Asp。WebForm/网页中使用的Net验证控件已经执行了验证,在服务器端代码中,如果应用了所有的验证(例如,如果输入了所有的必填字段等),那么IsValid变为true。

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

基本上,ASP。. NET验证控件有助于验证asp.net。. NET页面从客户端和服务器端进行验证,并且与普通JavaScript验证相比具有优势。

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

. Net验证服务器控件,在尝试将数据保存到服务器端之前,您仍然需要仔细检查Page.IsValid

根据MSDN,这些控件在客户端注入了某种javascript验证;

默认情况下,验证器控件将客户端ECMAScript (JavaScript)注入页面以在浏览器中执行验证检查。这为用户提供了验证错误的即时反馈;如果没有客户机脚本,检查验证错误将需要往返服务器,这有时会很慢。实际上,在客户端验证成功之前,您无法提交页面

https://msdn.microsoft.com/en-us/library/a0z2h4sw.aspx

一些控件也有一个服务器验证选项,如果你需要的话可以使用:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args){
try 
{ 
    DateTime.ParseExact(args.Value, "m/d/yyyy", 
        System.Globalization.DateTimeFormatInfo.InvariantInfo); 
    args.IsValid = true; 
} 
catch 
{ 
   args.IsValid = false; 
}}

你也可以检查Page.IsValid

NET验证控件可用于客户端和服务器端验证。验证控件总是在服务器上执行验证。它们还具有完整的客户端实现。使用EnableClientScript属性指定是否启用客户端验证。