ASP.NET - 在表示层中显示业务层错误

2024-05-29

目前,在我正在开发的 ASP.NET 应用程序中,基本验证(即必填字段)是在表示层中使用验证器和 ValidationSummary 完成的。这对我来说非常有用,因为 ValidationSummary 将显示多个错误消息(假设多个验证器设置为无效)。

我还在业务层中完成了一些验证 - 由于它们的复杂性(以及数据服务层的依赖性),我不想将它们保留在表示层中。但是,我不确定将这些发送回表示层以显示给用户的最佳方法。我最初的考虑是发回一个List<string>验证失败的消息,然后为每个错误动态创建一个 CustomValidator 控件(因为显然您只能将一条错误消息绑定到一个 Validator 控件),以便在有任何错误时在 ValidationSummary 中显示。

我假设我不是第一个遇到这个问题的人,所以我想知道是否有人对此有任何建议。

Thanks!


本质上有两种方法可以做到这一点:要么从业务层传回错误代码/对象,要么抛出异常。您也可以将两者结合起来。

例如,您可以看一下 SqlException 类。当您将 SQL 发送到 SQL Server 时,它会首先运行查询解析器来解析您的 SQL。如果它发现语法错误,那么它将抛出 SqlException 并终止查询。您的查询中可能存在多个语法错误。因此 SqlExeption 类有一个 Errors 属性,其中包含错误列表。然后,您可以在表示层中枚举该列表以格式化错误消息,可能使用 CustomValidator。

您也可以简单地返回错误列表而不引发异常。例如,您可以让函数在至少发生一个错误时返回一个 List,并在调用成功时返回 null。或者您可以将 List 作为参数传递到函数中。都可以,就看你觉得哪种方式更方便了。抛出异常的优点是它会立即展开多个调用帧,因此您不必在每个级别上检查返回值。例如,如果函数 A 调用函数 B ,B 调用函数 C,C 发现有问题,那么如果让 C 返回一个错误对象(或错误代码),则 B 必须有代码来检查 C 是否返回错误并通过错误代码/值返回后,A 也必须检查它 ---- 您需要在每个级别上检查它。另一方面,如果您只是让 C 抛出异常,那么代码将直接进入异常处理程序。您没有检查每个级别的返回值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET - 在表示层中显示业务层错误 的相关文章

随机推荐