2012-04-12 56 views
8

我最近在Stack Overflow上提出了一个问题here,关于在Web API测试版中寻找模型绑定的正确扩展点。使用自定义提供者/ IModelBinder可以完全控制模型绑定并访问价值提供者。如何在MVC4 Web API的自定义绑定中调用默认模型绑定?

但是,这实在太多控制。我只想控制如何映射几个值,并且不想手动编写模型绑定,否则这些模型绑定工作得很好。

归根结底,这是希望我能够做到:

public class MyCustomModelBinder : IModelBinder 
{ 
    public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) 
    { 
     // Invoke default model binding 

     // Pull out custom values 
     var value1 = bindingContext.ValueProvider.GetValue("value1"); 
     var value2 = bindingContext.ValueProvider.GetValue("value2"); 

     bindingContext.Model.Value1 = DoCustomStuff(value1); 
     bindingContext.Model.Value2 = DoCustomStuff(value2); 

     return true; 
    } 

    ... // Define DoCustomStuff 
} 

它看起来是相当困难的阿霍德为的WebAPI一个默认提供的。 有没有人知道它是否可访问以及如何在自定义模型联编程序中访问它?

回答

-1

即时消息在网络API不知道,但在MVC你可以从DefaultModelBinder继承和呼叫base.BindModel

+1

呀,可惜的Web API是一个完全不同的动物,现在在公测。默认的绑定器提供者操作是一种抽象方法。 – 2012-04-12 16:07:30

+0

这有一个'asp.net-web-api'的标签,它与'MVC'有着非常不同的模型绑定,所以这个答案根本没有帮助。 – atconway 2016-04-08 18:40:41