首页 > 解决方案 > 完全定制的客户端数据验证

问题描述

我有一个基于服务器的数据验证自定义解决方案。更新数据时,我的代码将首先通过调用数据库 (sp) 进行验证,并返回数据可能无法正确更新或创建的任何原因。我打算用一串错误代码来做到这一点。接下来,我将加载到可以在视图中显示的相关消息的视图包中。自定义消息来自数据库,可由管理员更新。此外,自定义消息以多种语言存储。出于这个原因,我认为最好的方法是将它们放在数据库中。

问题是,我可以通过在 viewbag 中预加载消息并根据这个 viewbag 在客户端上做一些验证来做这样的事情吗?

并非所有数据验证都可以在客户端站点上进行。(例如,检查名称是否唯一)。但是某些数据验证不需要服务器(空文本框)。

当前系统是在 Microsoft SQL db 上使用 ASP.NET Core MVC 开发的

标签: asp.net-core-mvc

解决方案


您可以通过将以下脚本添加到您的应用程序来实现客户端验证。这被称为不显眼的验证。标签助手和 HTML 助手使用模型属性的验证属性并呈现为data-属性。Jquery 不显眼的验证解析data-属性并进行客户端验证。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"></script>

您可以显示错误:

<span asp-validation-for="FirstName" class="text-danger"></span>

此外,您可以检查名称是否唯一或不使用[Remote]属性。

[Remote(action: "CheckUniqueName", controller: "Home")]
public string Email { get; set; }

推荐阅读