【问题标题】:How to return warnings from server side to silverlight如何将警告从服务器端返回到 silverlight
【发布时间】:2011-05-28 08:10:21
【问题描述】:

我们有一个业务案例,需要从服务器端返回验证错误和警告,并在 silverlight 上显示。 我看到 silverlight 正在使用 System.ComponentModel.DataAnnotations.ValidationResult 来处理错误。它不包含“警告”字段。

我想知道是否有人有一个好主意来处理这个问题。谢谢。

【问题讨论】:

    标签: silverlight warnings


    【解决方案1】:

    我认为 ValidationResult 被 ValidationAttribute 的子类抛出的 ValidationException 使用。通常这种机制与阻塞验证错误一起使用,因为抛出异常会停止代码的执行。如果它发生在您的服务中,则可以将异常发送到客户端并进行处理,但这并不总是需要的场景。

    您可以扩展此模型(这些类 ValidationAttribute、其子类、ValidationException 未密封)以添加警告标志,但随后您必须捕获异常以继续处理并在出现警告时重新抛出。

    另一种选择是将业务逻辑验证错误和警告添加到您对客户端的响应中。我喜欢这种方法,因为您可以按照您想要/需要的方式包含任何您想要的信息。

    【讨论】:

    • 谢谢。目前我的解决方案是从服务器获取任何错误并将它们添加到 context.ValidationResults 中,以便 ValidationSumarry 可以提取并显示它们。但是,ValidationResults 仅适用于错误,没有警告空间……您认为我应该继承 MS 的课程并添加我的字段吗?这是一个很好的解决方案吗?或者有什么更好的。由于某种技术原因,我无法返回验证错误...
    • ValidationResult 不幸被密封。如果您没有同时显示错误和警告,您可以在 ViewModel 上设置一个标志来指示您是否有错误或警告,并相应地设置 ValidationSummary 的样式。如果我发现了什么,我会寻找更好的解决方案并回复。
    • 检查 INotifyDataErrorInfo (msdn.microsoft.com/en-us/library/…) 文档中的备注,因为我认为这是在 ViewModel 上自定义错误的一个很好的起点。但是,在这种情况下,您将在 ViewModel 上实现接口以通知 ui 有新错误可用,而不是将错误添加到 ValidationContext。
    • 另一种解决方法是在错误消息前面加上一个字母,E 表示错误,W 表示警告。然后,您可以使用 ValidationSummary.ErrorStyle 属性定义一个内联样式,您将在其中定义一个新模板。在模板中,您可以使用 ValueConverters 根据错误消息的第一个字符设置图像或颜色(以指示错误或警告),并使用另一个 ValueConverter 从消息中剥离字母以显示它。这将允许您继续使用 silverlight 验证引擎,并为警告提供视觉指示。
    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多