0

複雑なWebリクエストを.Netオブジェクトに変換する方法が必要です。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を介して送信されています。

4

1 に答える 1

1

Web APIは、モデルバインディングを使用してリクエスト本文からのデータをバインドしません。代わりに、パラメータバインディングを確認する必要があります。http://blogs.msdn.com/b/jmstall/archive/2012/05/11/webapi-parameter-binding-under-the-hood.aspx

jsonコンテンツの場合、WebAPIはモデルをバインドするためのデフォルトとしてjson.netシリアライザーを使用します。ネストされたモデルまたはコレクションをサポートします。したがって、モデルでサポートされていないものはありません。jsonを逆シリアル化するときに問題が発生しましたか?または、データをバインドするときに特別なロジックがありますか?

于 2012-11-14T23:38:05.250 に答える