惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
V
V2EX
Cloudbric
Cloudbric
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
量子位
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
K
Kaspersky official blog
博客园 - 【当耐特】
T
Tenable Blog
L
Lohrmann on Cybersecurity
The Cloudflare Blog
S
Schneier on Security
A
Arctic Wolf
Latest news
Latest news
C
Cyber Attacks, Cyber Crime and Cyber Security
罗磊的独立博客
T
The Exploit Database - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
小众软件
小众软件
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
雷峰网
雷峰网
NISL@THU
NISL@THU
人人都是产品经理
人人都是产品经理
月光博客
月光博客
J
Java Code Geeks
V
Visual Studio Blog
S
Security Affairs
博客园 - Franky
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
H
Heimdal Security Blog
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
AWS News Blog
AWS News Blog
G
GRAHAM CLULEY
T
Troy Hunt's Blog
SecWiki News
SecWiki News
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 聂微东

博客园 - AABBbaby

从研发到供应链——轻量级CAD查看器SpinFire Insight在汽车行业的应用价值 DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(五) 基于嵌入向量的智能检索!HOOPS AI 解锁 CAD 零件相似性搜索新方式 从自研到外购:HOOPS如何帮助工业软件开发商加速上市、聚焦差异化 车企携手Tech Soft 3D:基于 HOOPS 工具集打造Web端一体化工程可视化解决方案 CAD格式转换引擎HOOPS Exchange v2026.2.0:计算镶嵌能力升级,释放3D数据处理新潜力 界面控件DevExpress JS & ASP.NET Core v25.2新版亮点 - AI驱动扩展功能升级 CAD格式转换引擎HOOPS Exchange 2026.2.0发布:率先支持 NX 2512,引领工业数据交换新标杆 界面组件DevExpress正式官宣发布v25.2.5|附高速下载 HOOPS Mesh、HOOPS Access 与 HOOPS Solve 发布 SAM 2.15:全面提升 CAE 数据处理与仿真互操作能力 DevExpress WPF中文教程:Data Grid - 服务器模式和即时反馈模式 界面控件DevExpress WinForms中文教程:Data Grid - 数据绑定(二) CAE后处理开发选商业还是开源工具?HOOPS Envision与VTK/ParaView深度对比 DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(四) 工业级可视化引擎HOOPS Visualize Web 2026.1.0重塑Web 3D可视化体验 界面控件DevExpress VCL v25.2新功能亮点:支持RAD Studio 13 HOOPS可视化技术如何推动SINTEF Ocean海洋结构仿真软件走向工程化应用? DevExpress WPF中文教程:Data Grid - 示例服务教程 突破性迈进 | HOOPS Exchange 2026.1正式发布DGN阅读器,全面开启 DGN 数据高保真访问时代 3D Web可视化引擎HOOPS Visualize Web v2026.1.0更新发布:持续增强Web端工程级3D可视化能力 应用程序主题研发有妙招!DevExtreme拥有多种预定义主题样式 界面组件DevExpress WPF v22.1 - 全新升级数据分析功能 移动应用开发推荐这个三方组件,时间选择即刻拥有全新体验 UI组件Kendo UI for Angular R3 2022亮点——让应用程序体验更酷炫 如何用界面组件DevExpress WPF创建Excel式的过滤功能?赶紧Get 响应式UI组件DevExtreme 10月新版——v22.1.6全新发布 界面控件DevExtreme中文使用指南——如何构建 & 应用模板 行业领先的界面控价DevExpress 10月新版——v22.1.6发布 「行业应用」界面框架Kendo UI助力企业加速完成财务数据可视化 如何用界面组件DevExpress WinForm创建一个支持High DPI的应用? 界面组件Telerik WinForm R3 2022,让应用启动变得更酷炫 界面组件DevExpress WinForms v22.1新版亮点 - 支持High-DPI UI组件Kendo UI for jQuery R3 2022亮点——拥有全新的按钮组件 界面组件DevExpress WPF TreeView中文指南 - 如何实现数据分层展示 界面控件DevExpress WinForm中文指南 - 使用HTML&CSS模板的条件样式 MyEclipse技术全面解析——Spring IDE,改变应用程序研发 界面组件DevExpress WinForms v22.1 - 类office功能全新升级 界面组件Telerik UI for WPF R3 2022——支持最新的.NET 7预览版 界面控件DevExpress WPF Data Grid组件,拥有XAML设计时项目源向导
「详解」看界面控件DevExtreme如何实现异步验证
AABBbaby · 2022-10-19 · via 博客园 - AABBbaby

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。

DevExtreme v22.1正式版下载

现在可以使用异步验证规则在服务器上执行字段验证逻辑,实现函数validationCallback来返回一个Promise(或者jQuery的等效函数)。

B/S端界面控件DevExtreme——如何实现异步验证?

下面是一个示例:

$('#textBox').dxTextBox({ ... })
.dxValidator({
validationRules: [{
type: 'async',
message: 'Invalid value',
validationCallback: ({value}) =>
new Promise((resolve, reject) => {
fetch('https://mydomain.com/validationService', {
method: 'POST',
body: JSON.stringify({ data: value })
})
.then(res => {
if (!res.ok)
throw new Error(`HTTP error: ${res.status} ${res.statusText}`);
// Assuming the server returns JSON
return res.json();
})
.then(serverResult => {
// Server decided whether data is valid
if (serverResult.dataIsValid)
resolve();
else
reject(serverResult.errorMessage);
})
.catch(error => {
// There's been a technical error.
console.error('Server-side validation error', error);

// Decide what to tell the user.
reject('Cannot contact validation server');
});
});
}
}]
});

如果Promise被解析,验证就成功,如果Promise被拒绝,验证就失败。然而还有一个选择,您可以用一个像这样的对象来解析Promise:

{
isValid: false,
message: 'Invalid value'
}

DevExtreme目前支持这种场景,允许您直接返回服务器结果,不需要任何额外的逻辑。在这种情况下,即使Promise被解析,验证的成功或失败取决于isValid属性,失败时将向用户显示可选消息。为了说明这个用例,下面是一个短的示例:

validationCallback(params) {
return $.getJSON('https://mydomain.com/validationService',
{ data: params.value });
}

注意,如果不进行任何处理,您可能会将技术错误作为验证消息显示给最终用户,推荐考虑边界情况的更详细的算法,如第一个示例所示。

为了保持有效的验证,总是首先评估任何同步规则,只有在所有同步规则都通过时才评估异步规则。一旦异步验证开始,所有这些规则都将被并行检查。

ASP.NET Core & ASP.NET MVC

我们增加了对ASP.NET [Remote]属性在ASP.NET Core和ASP.NET MVC上启用异步验证,您可以将此属性应用到模型的属性中,传递控制器的名称和要调用的方法进行验证。

[Remote("CheckEmailAddress", "Validation")]
public string Email { get; set; }

该属性自动为' async '验证规则生成客户端代码,回调服务器上运行的控制器,控制器方法应该检查有效性:

[HttpPost]
public IActionResult CheckEmailAddress(string email) {
if (!_userRepository.VerifyEmail(email)) {
return Json($"Email {email} is already registered.");
}

return Json(true);
}

这段代码使用Microsoft文档中为.NET Core Remote属性定义的返回值。

或者,您也可以以上面描述的JSON格式返回有效性信息,包括isValid和message字段,这允许您在.NET Core中创建验证服务,这些服务与为其他受支持的DevExtreme平台编写的客户端兼容。

显式验证

如果在ValidatorValidationGroup 上调用validate(),并且有要检查的异步规则,则需要使用ValidationResult.complete 属性提供的Promise接口来处理结果。

const result = validator.validate(); // OR validationGroup.validate();

result.complete.then(res => {
// res.status is 'valid' if all rules passed
// res.status is 'invalid' if any rules failed
if (res.status === 'invalid') {
// res.brokenRules contains an array of rules
// that failed validation
}
});
限制

此时当您使用行、批处理或单元格编辑模式时,数据网格和树列表小部件不支持异步规则。


DevExpress技术交流群6:600715373      欢迎一起进群讨论

更多DevExpress线上公开课、中文教程资讯请上中文网获取