在ASP.NET Core Razor Pages 中进行前端页面验证
admin
2022-03-04在ASP.NET Core Razor Pages 中进行前端页面验证
导航:
在本视频中,我们将讨论ASP.NET Core Razor Pages中进行前端页面验证。
在ASP.NET Core Razor Pages中实现客户端验证非常简单。我们要做的就是按照指定的顺序引用以下3个js脚本文件。
- jquery.js
- jquery.validate.js
- jquery.validate.unobtrusive.js
布局文件或单个 Razor Pages
我们应该将这些js脚本文件加载到_Layout.cshtml
页面还是单个 Razor Pages上呢?
这个问题的答案实际上取决于您需要在哪里进行客户端验证。如果需要在应用程序中的多个页面上进行客户端验证,请使用布局文件加载它们。
如果仅在一两个 Razor Pages上需要它们,则仅在这些 Razor Pages上加载它们。使用这种方法,如果用户从不访问那些1或2个特定的 Razor Pages,则不必下载js脚本文件。
_ValidationScriptsPartial.cshtml
如果您已使用Web应用程序模板并使用VisualStudio创建了一个新的ASP.NET Core项目。您很可能在Shared
文件夹中具有以下部分视图。
该文件的名称为_ValidationScriptsPartial.cshtml
,其中包含以下2个脚本引用
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
_Layout.cshtml
已经加载了jQueryjs脚本文件。因此,我们不必再次加载它。
在我们的情况下,我们仅需要在编辑学生
Razor Pages中进行客户端验证。在编辑学生
Razor Pages上包括以下脚本部分以呈现部分视图。
我们将在即将到来的视频中讨论部分观点。我们使用局部标签助手即partial taghelper
,以呈现分部视图。
//两种写法
@section Scripts {
@*<partial name="_ValidationScriptsPartial" />*@
@*@Html.PartialAsync("_ValidationScriptsPartial")*@
}
我们在ASP.NET Core 教程的第29部分中讨论了布局部分。
客户端验证在ASP.NET Core中如何工作
考虑以下Name
的input标签。我们已经使用asp-for标记助手来绑定到Student类的Name属性。
<input asp-for="Student.Name">
我们在Student类的Name属性上使用了[Required]属性。此属性使名称
输入字段成为必填字段。以下是生成的HTML。
<input class="form-control" placeholder="Name" type="text" data-val="true" data-val-required="请输入名字" id="Student_Name" name="Student.Name" value="">
注意,我们有几个特殊的data- *属性。这些属性使我们可以向HTML元素添加额外的信息。 data-val =true
表示启用客户端验证。
data-val-required属性指定验证失败时显示的必需验证错误消息。这些data-*属性包含执行客户端验证所需的所有信息。
读取这些data-*
属性并执行客户端验证的是非侵入式库(即jquery.validate.unobtrusive.js)
我们真的需要服务器端验证吗
我们有客户端验证。因此,我们真的也需要服务器端验证吗?答案是肯定的,必须要有。
顾名思义,客户端验证是在客户端计算机上进行的,而无需往返于Web服务器。显然,由于反馈是即时的,因此可以提高性能和用户体验。
但是,最终用户可以通过禁用浏览器中的JavaScript支持来轻松绕过客户端验证。
因此,您永远不应仅依赖客户端验证,因为它是不安全的。无论我们是否进行客户端验证,都应始终进行服务器端验证。
客户端验证不起作用
如果隐式验证在 ASP.NET Core中不起作用,请确保检查以下内容。
确保未禁用浏览器对 JavaScript 的支持
确保按指定的顺序加载以下客户端验证库
- jquery.js
- jquery.validate.js
- jquery.validate.unobtrusive.js
确保为您要测试的环境正常加载了这些验证库。如:Development(开发), Staging(模拟), Production(生产)等环境下。