我正在从MVC区域之外的项目中提取一些代码到HttpHandler,同时重用尽可能多的代码。
为了方便起见,我想将发布的数据转换为已在Controller中使用的相同模型。
所以,现在我正在寻找逻辑MVC在封面下使用神奇地将发布的数据转换为模型,但经过几次反编译尝试后我无法找到它。
有人能指出我正确的方向吗?
谢谢!
SaphuA:基本上,我想输入HttpContext和目标Model的类型,并让helper方法完成映射的其余部分。
答案 0 :(得分:3)
正如Eric所说,只是扩展DefaultModelBinder.cs
默认模型绑定器为here
调用模型绑定器整体流程很好地概述here所以只需滚动查看控制器动作调用者的调用位置。
如果您想围绕绑定器的实现启动一些单元测试,请查看MVC源tests
使用github镜像因为codeplex不支持行号链接: - )
HTH
答案 1 :(得分:1)
我认为this article解释得非常好。
简而言之,有一个DefaultModelBinder
类来处理POST数据到模型对象的转换。如果您愿意,可以通过扩展或实现IModelBinder
然后在Application_Start方法中使用MVC注册模型绑定器来替换您自己的模型绑定器。