我试图在我的ASP.NET MVC 4项目中创建自定义模型绑定器。但我对IModelBinder iterfaces感到困惑。 VS可以找到三个 IModelBinder接口。在以下命名空间中。
using System.Web.Http.ModelBinding;
using System.Web.Mvc;
using System.Web.ModelBinding;
bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext);
bool BindModel(ModelBindingExecutionContext modelBindingExecutionContext, ModelBindingContext bindingContext);
所有相关的类,如 ModelBindingContext , ModelMetadata 等,也会重复。我和我的朋友无法找出这种可怕的代码重复的目的是什么。为什么Microsoft开发人员不提取共享程序集的公共类? 据我所知,MVC中使用了一个接口,Web Api中有一个接口,第三个版本的目的是什么?这个接口是独立的还是以某种方式相互连接的?
答案 0 :(得分:16)
我不是MS民谣,但我认为这是答案 -
http://msdn.microsoft.com/en-us/library/system.web.modelbinding(v=vs.110).aspx
System.Web.ModelBinding命名空间提供了支持您的类 将数据对象绑定到ASP.NET Web窗体服务器控件。
http://msdn.microsoft.com/en-us/library/system.web.mvc(v=vs.118).aspx
System.Web.Mvc命名空间包含类和接口 支持ASP.NET模型视图控制器(MVC)框架进行创建 Web应用程序。此命名空间包含表示的类 控制器,控制器工厂,动作结果,视图,部分 查看,模型粘合剂等等。
http://msdn.microsoft.com/en-us/library/system.web.http.modelbinding(v=vs.118).aspx
此命名空间适用于Web API 2
简而言之,所有三个框架都是相互独立的。你应该记住,它们是可单独部署的框架。因此有必要保留所有这些。如果您不需要特定的一个,则从引用的程序集中删除它。他们不相互依赖。它们都来自不同的框架,它们都用于最适合的目的。
intellisense 或 resharper 的功能就像他们可以列出的所有工具一样。但是你应该根据你的框架和需要选择合适的人。但通常它们都可以在.net框架完整版中获得,并且可能提供相同的工作。