我经常从学校的“讲师”那里得到关于此的不正确信息。
对于 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 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/