只是想更多地使用自定义模型绑定器。我目前仍在使用IMapper接口这样做,但想知道自定义绑定器的部分目的是将视图模型或输入模型映射到业务实体吗?我可以看到,如果我使用MVC自定义绑定器可能会有一些限制。在MVC中使用自定义绑定器有什么好处?我的应用会获得更好的性能吗?
答案 0 :(得分:3)
简短回答是不,你不应该
ModelBinder
本身是ASP.NET MVC基础结构的一部分。如果你看看ASP.NET MVC pipline (PDF),你会发现它的工作是
将已发布的Web表单数据(基本上是字符串)或查询字符串从URL转换为特定类的实例
ASP.NET MVC框架有一个DefaultModelBinder
适用于99%的病例。自定义模型绑定器可用于标准数据转换失败的情况,例如将$ 1,234.56
从文本框映射到decimal
值1234.56
此外ModelBinder
使用单个BindModel()方法实现IModelBinder
接口。这种方法需要很难“手工制作”的参数才能使用它们,并且与您的场景完全无关。
你真正想要的是什么 - 在视图模型和业务对象之间的自定义对象映射,您可以手动将一个对象属性值分配给另一个对象属性值 - 或利用Automapper或ValueInjecter这样的库/框架来处理对象映射的麻烦 - 或两者兼而有之