gpt4 book ai didi

asp.net - 如何在 WCF 和 ASP.NET 之间集成企业库验证应用程序 block 验证结果?

转载 作者:行者123 更新时间:2023-12-04 07:02:01 24 4
gpt4 key购买 nike

企业库验证应用程序块 (VAB) 与 ASP.NET 以及 WCF 集成。

有没有办法将 WCF 中创建的 ValidationResults 与 ASP.NET 集成?

例如ASP.NET 网页调用 WCF 服务。 WCF 服务使用 VAB 验证数据并通过 FaultContract 返回验证信息。 ASP.NET 页面可以获取结果并显示一些错误消息。然而,一种常见的方法是指出哪些字段有错误(例如内联消息或星号)。似乎这些方法中的大多数都涉及能够将验证结果与控件或验证器相关联。

我不认为有开箱即用的解决方案,但也很好奇是否有人这样做过以及他们的方法是什么。

最佳答案

由于没有现成的解决方案,也没有发布任何答案,我将分享我实现的内容。我不喜欢这种方法,但它对我有用。

概览

基本方法是让 ASP.NET 页填充 DataContract 对象上的属性与正在验证的控件的 ClientId 之间的映射。当发生验证错误时,ClientId 作为 FaultContract 的一部分从服务返回到 asp.net 页面。然后从 FaultException 中提取详细信息; ASP.NET 页面检索导致错误的控件的 ClientId,并可以采取适当的操作(例如,更改控件外观或在验证器上设置文本)。

详情

所有 DataContract 对象都继承自一个公开 Dictionary 的基类。该字典用于将对象属性映射到 ASP.NET 控件。在 Dictionary 中,键是 DataContract 对象上的属性名称,值是控件的 ClientId。在调用服务之前,客户端必须将 Dictionary 附加到 DataContract 对象。

当企业库创建 ValidationResult 时,它包含一个名为 Target 的属性,它是已验证的对象。 ValidationResult 还包含一个名为 key 的属性,它是来自已验证的目标对象的属性的名称。 ValidationResult 键也是在调用服务之前在 ASP.NET 页面中设置的 Dictionary 中的一个键。

使用 ValidationResult 键,可以从 ValidationResult 目标中提取 ASP.NET 提供的信息 (ClientId)。然后将信息添加为 ValidationResult 的标签。不幸的是,Tag 是一个只读属性,因此必须通过创建一个新的 ValidationResult 并将标签传递给构造函数来设置它。

然后将 ValidationResults 集合转换为我们需要使用的预先存在的 CustomValidationResults 集合(看起来就像 ValidationResult)。然后将 CustomValidationResults 添加到自定义 ValidationFault 并抛出 FaultException。

然后从 ASP.NET 页面中的 FaultException 中提取 ValidationFaults。 ValidationFault 包含与错误关联的控件的 ClientId,因此页面可以选择显示它认为合适的消息。

关于asp.net - 如何在 WCF 和 ASP.NET 之间集成企业库验证应用程序 block 验证结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1703423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com