实现IModelBinder时的最佳实践

时间:2009-10-11 11:51:27

标签: asp.net-mvc imodelbinder

我正在寻找一套在实施IModelBinder时使用的最佳做法。

我已经阅读了三本不同的MVC书籍,每一本都在实现中略有不同,但没有任何实际的解释。

  • Hanselman,Haack,Guthrie,Conery的书甚至没有提到IModelBinder
  • 巴勒莫建议延长DefaultModelBinder而不是直接实施IModelBinder,但我真的不知道如何利用这些好处
  • Sanderson提到更新现有的Model实例,并调用ModelState.SetModelValue()来遵循惯例。

我只是想确保我的模型绑定器遵循约定,并且我正确理解整个ModelBindingContext

任何提示,技巧,GOOD教程推荐?

4 个答案:

答案 0 :(得分:10)

答案 1 :(得分:2)

我从DefaultModelBinder继承,因为它会自动绑定实体中的基本属性。我增强了它,因此它也绑定了导航属性。我的binder首先执行继承的绑定,然后在表单中搜索其他的导航属性值。我认为你的方法应该取决于你真正想做的事情。你也可以使用反射器,看看默认粘合剂背后的真正含义。这可能说服你继承。

答案 2 :(得分:2)

Travis Illig最近写了一篇关于创建自定义模型绑定器时数据类型验证的非常好的博客文章。

我之前从未见过这个建议,我觉得它真的很棒 - 所以我想提供这个链接:http://www.paraesthesia.com/archive/2012/01/31/data-type-validation-and-model-binding-in-asp-net-mvc.aspx

答案 3 :(得分:0)

MVC Futures 2有一个可扩展模型绑定系统。您可以在http://aspnet.codeplex.com/releases/view/41742

的发布文档中找到更多信息

只需下载“ASP.NET MVC 2 Futures Extensible Model Binder Documentation”