2012-11-14 18 views
0

我需要一種方法將複雜的Web請求轉換爲.Net對象。據我所知,WebAPI使用默認模型聯編程序,對於複雜的數據,需要定製模型聯編程序。通過WebAPI動作接收復雜數據

對象

Public Class LapMobileModel 
    Public Property Type As Integer 
    Public Property EndTime As String 
    Public Property StartTime As String 
End Class 

Public Class RaceMobileModel 
    Public Property RaceName As String 
    Public Property UserId As Integer 
    Public Property Laps As IEnumerable(Of LapMobileModel) 
    Public Property numberOfRacers As String 
    Public Property PreRacePosition As String 
    Public Property PostRacePosition As String 
End Class 

Public Class RaceListMobileModel 
    Public Property RaceList As IEnumerable(Of RaceMobileModel) 
End Class 

行動(在ApiController)

Public Function SyncLapData(ByVal raceList As RaceListMobileModel) As String 
    'stuff 
    Return "OK" 
End Function 

而且我有一個自定義的模型綁定的骨架:

Imports System.Web.Http 
Imports System.Web.Http.ModelBinding 
Imports System.Web.Http.Controllers 


Public Class EventDataModelBinder 
    Implements IModelBinder 

    Public Function BindModel(actionContext As HttpActionContext, 
           bindingContext As ModelBindingContext) 
           As Boolean Implements IModelBinder.BindModel 
    End Function 
End Class 

問題:

如何使用actionContext來獲得我需要的數據來構建RaceListMobileModel

如何正確存儲它在bindingContext

現在,數據通過帶有JSON內容的POST發送。

回答

1

Web api不使用模型綁定來綁定來自請求主體的數據。你應該看看參數綁定。 http://blogs.msdn.com/b/jmstall/archive/2012/05/11/webapi-parameter-binding-under-the-hood.aspx

對於json內容,web api使用json.net序列化程序作爲默認綁定模型。它支持嵌套模型或集合。所以我沒有看到你的模型中不支持任何東西。反序列化json時是否遇到任何問題?或者在綁定數據時你有一些特殊的邏輯?

+0

Do'H!我期待着一個從未出現過的問題!非常感謝!反序列化工作正常。 –