.NET模型绑定器

时间:2014-06-11 20:45:14

标签: c# asp.net .net model-binding

我试图在我的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中有一个接口,第三个版本的目的是什么?这个接口是独立的还是以某种方式相互连接的?

1 个答案:

答案 0 :(得分:16)

我不是MS民谣,但我认为这是答案 -

  1. System.Web.ModelBinding 适用于ASP.Net WebForms应用程序
  2. http://msdn.microsoft.com/en-us/library/system.web.modelbinding(v=vs.110).aspx

      

    System.Web.ModelBinding命名空间提供了支持您的类   将数据对象绑定到ASP.NET Web窗体服务器控件。

    1. System.Web.Mvc 适用于ASP.Net MVC
    2. http://msdn.microsoft.com/en-us/library/system.web.mvc(v=vs.118).aspx

        

      System.Web.Mvc命名空间包含类和接口   支持ASP.NET模型视图控制器(MVC)框架进行创建   Web应用程序。此命名空间包含表示的类   控制器,控制器工厂,动作结果,视图,部分   查看,模型粘合剂等等。

      1. System.Web.Http.ModelBinding 适用于ASP.Net Web API
      2. http://msdn.microsoft.com/en-us/library/system.web.http.modelbinding(v=vs.118).aspx

          

        此命名空间适用于Web API 2

        简而言之,所有三个框架都是相互独立的。你应该记住,它们是可单独部署的框架。因此有必要保留所有这些。如果您不需要特定的一个,则从引用的程序集中删除它。他们不相互依赖。它们都来自不同的框架,它们都用于最适合的目的。

        intellisense resharper 的功能就像他们可以列出的所有工具一样。但是你应该根据你的框架和需要选择合适的人。但通常它们都可以在.net框架完整版中获得,并且可能提供相同的工作。