MVC 2 模型验证期间 IDataErrorInfo 是否被忽略?
我目前将我的项目迁移到 MVC 2,并且在使用默认模型绑定和验证时 IDataErrorInfo 似乎不起作用。是不是被剪掉了?
I currently migrated my project to MVC 2 and IDataErrorInfo doesn't seem to work when using default model binding and validation. Is it cut out?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
摘要
我将此错误发布到 MVC 2 问题跟踪器: http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=4891
它将在下一个预览版本中解决。
MVC 1.0 中的 DefaultModelBinder:
MVC 2.0 beta 中的 DefaultModelBinder:
它不使用 IDataErrorInfo this[string columnName] 属性...似乎是一个错误,因为 DefaultModelBinder 仍然使用 Error 属性。至少这是不一致的。
编辑
我使用了 Reflector 并注意到 DataErrorInfoPropertyModelValidator 似乎没有被使用,所以我创建了自己的类:
然后我使用了:
并且它有效:)这只是临时解决方案。必须在最终的 MVC 2 中进行更正。
编辑
我还在
中将
方法。if (base.Metadata.Model != null)
更改为 if (container != null)DataErrorInfoPropertyModelValidator
的 >Validate()SUMMARY
I posted this error to MVC 2 issue tracker: http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=4891
It will be resolved in next preview release.
DefaultModelBinder in MVC 1.0:
DefaultModelBinder in MVC 2.0 beta:
It doesn't use IDataErrorInfo this[string columnName] property... Seems like a bug, because DefaultModelBinder still uses Error property. It is inconsistency at least.
EDIT
I used reflector and noticed that DataErrorInfoPropertyModelValidator doesn't seem to be used, so I created my own class:
Then I used:
And it works:) This is just temporary solution. Will have to be corrected in final MVC 2.
EDIT
I also changed
if (base.Metadata.Model != null)
to if (container != null) inValidate()
method ofDataErrorInfoPropertyModelValidator
.它肯定在 MVC 2 Preview 2 中。请查看
DefaultModelBinder.OnPropertyValidating
和OnModelUpdated
。It's certainly in MVC 2 Preview 2. Look at
DefaultModelBinder.OnPropertyValidating
andOnModelUpdated
.