2012年12月18日更新由于这个问题似乎有很多观点,我应该指出,接受的答案不是我使用的解决方案,但它确实提供了构建解决方案的链接和资源,但是,对我来说请注意,这不是理想的解决方案。我的回答包含MVC框架标准部分的替换;并且您应该只在您愿意检查它们是否仍适用于future版本时才使用它们(一些私有(private)代码已从官方来源中删除,因为基类中没有足够的可扩展性)。不过,我可以确认这两个类也适用于Asp.NetMVC4和3。也可以为Asp.NetWebAPI框架重复类似的实现,这是我最近完成的。结束更新我的类型有很多“标准”验证(必需等),但也有一些自定义验证。某些验证需要获取服务
如果我有以下文本框:这在代码隐藏中:privatevoidContentPresenter_Error(objectsender,ValidationErrorEventArgse){MessageBox.Show(e.Error.ErrorContent.ToString());}如果我在文本框中输入字母“x”,弹出的信息是value'x'couldnotbeconverted有没有办法自定义此消息? 最佳答案 我不喜欢回答我自己的问题,但看起来唯一的方法是实现一个ValidationRule,如下所示(其中可能有一些错误):pu
使用转换器,我可以区分至少4种关于源值更新的行为:转换为正确的值(->更新源)返回null(->表示错误)抛出异常并激活异常验证规则(->指示错误)返回Binding.DoNothing(->不更新源,但不指示错误eiter)用ValidationRule,我只能区分成功(->更新源)和失败(->不更新源),但我无法模拟与Binding.DoNothing关联的行为有没有办法使用ValidationRule以类似于Binding.DoNothing的方式转换器的行为? 最佳答案 Converters和ValidationRules的
我有一个Validator接口(interface),它提供了一个isValid(Thing)方法,返回一个ValidationResult其中包含一个boolean和原因消息。我想创建此接口(interface)的ValidatorAggregator实现,它在多个Validator之间执行OR(如果任何Validator返回肯定结果,则结果为正)。如果任何validator成功,我想短路并返回其结果。如果没有validator成功,我想返回所有失败消息。我可以使用流和findFirst().orElse(...)简洁地完成此操作,但是如果使用此模式,如果findFirst返回空,我