1

我正在从 MVC 区域之外的项目中提取一些代码到 HttpHandler,同时尽可能多地重用代码。

为方便起见,我想将发布的数据转换为已在控制器中使用的相同模型。

所以,现在我正在寻找 MVC 在幕后使用的逻辑,以将发布的数据神奇地转换为模型,但经过几次反编译尝试后,我无法找到它。

谁能指出我正确的方向?

谢谢!

SaphuA:基本上,我想输入 HttpContext 和目标模型的类型,然后让辅助方法完成其余的映射。

4

2 回答 2

3

正如 Eric 所说,只需扩展 DefaultModelBinder.cs

默认模型绑定器在这里

控制器动作调用程序调用模型绑定器

此处很好地概述了整个流程,因此只需滚动以检查调用控制器操作调用程序的位置。

如果您想围绕您的活页夹实现启动一些单元测试,请查看 MVC 源测试

使用 github 镜像,因为 codeplex 还不支持行号链接 :-)

高温高压

于 2013-06-01T09:48:14.440 回答
1

我认为这篇文章很好地解释了它。

简而言之,有一个DefaultModelBinder类处理 POST 数据到模型对象的转换。如果您愿意,您甚至可以用您自己的模型绑定器替换该模型绑定器,方法是扩展它或实现,IModelBinder然后在 Application_Start 方法中使用 MVC 注册模型绑定器。

于 2013-05-30T14:27:41.203 回答