2009-10-11 95 views
27

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

我已经阅读了三本不同的MVC书籍,每篇在他们的实现中做了一些稍微不同的东西,没有任何真正的解释。

  • 的Hanselman的,哈克,格思里,Conery设备书甚至没有提及IModelBinder
  • 巴勒莫建议延长DefaultModelBinder,而不是直接实现IModelBinder,但我实在不明白如何利用效益
  • Sanderson提到更新现有的Model实例,并呼吁ModelState.SetModelValue()遵循约定。

我只是想确保我的模型粘合剂遵循约定,并且我正确理解了整个ModelBindingContext

任何提示,技巧,良好的教程推荐?

回答

9

K Scott Allen提供了一些有关型号绑定的提示: http://odetocode.com/blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx

+0

文中提到的数据批注,所以我不知道我是否应该从DataAnnotationsModelBinder继承来代替。答案是不。 MVC 2 RTM的DefaultModelBinder已经包含DataAnnotationsModelBinder的逻辑。请参阅http://stackoverflow.com/questions/2666955/dataannotationsmodelbinder-with-mvc2-rtm/2669207#2669207 – 2010-08-10 05:47:24

2

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

1

一个活生生的例子可以在这里找到。在这个例子中,一个复杂的Apache solr 查询字符串已被封装以将简单对象传递给模型。

IModelBinder实施

Controller