3

我一直在阅读MVC 3 source code试图了解我应该坚持什么语义,如果我重写DefaultModelBinder.BindModel()甚至实现IModelBinder.BindModel()。BindModel()实现应该做什么?

目前还不清楚“状态”BindModel()应该在其工作完成后留下其他对象。当然,它假设返回一个代表ValueProvider数据解释的值,但它应该具有哪些副作用?例如:

  • 在方法结束后,MVC是否对期望的bindContext传递给BindModel()*有期望?
  • 什么,如果有的话,应该在ModelMetadata中设置IModelBinder.BindModel()? (DefaultModelBinder在其BindProperty()方法中设置属性元数据,由BindModel()调用。)
  • 应该重写DefaultModelBinder.BindModel()调用ModelState.AddModelError(),或者是BindProperty()覆盖更合适的位置特别是如果我想尽可能利用DefaultModelBinder的默认行为)?

DefaultModelBinder具有内置于其水暖这么多的语义,它使覆盖任何东西感觉很危险(即我觉得我无法在不违反Liskov principle覆盖任何东西)。缺少文档不会有帮助。

回答

0

如果您需要自定义绑定,我将实现IModelBinder接口并完成构建对象所需的操作。

相关问题