2012-04-12 57 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