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页面呈现验证控件RequiredFieldValidator和RangeValidator等,它自动创建客户端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验证;
https://msdn.microsoft.com/en-us/library/a0z2h4sw.aspx默认情况下,验证器控件将客户端ECMAScript (JavaScript)注入页面以在浏览器中执行验证检查。这为用户提供了验证错误的即时反馈;如果没有客户机脚本,检查验证错误将需要往返服务器,这有时会很慢。实际上,在客户端验证成功之前,您无法提交页面
一些控件也有一个服务器验证选项,如果你需要的话可以使用:
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属性指定是否启用客户端验证。