2016-04-07 13 views
0

oDataに基づいたASP.NETバックエンドでAngularJSフロントエンドを使用するアプリケーションで作業しています。私は仕事のための投稿要求を得ることにいくつかの困難を抱えています。私のコントローラでPOSTメソッドは、すべて基本的に次のようになります。ASP.NET ODataControllerがプロパティ値を受け取らない

Function Post(ByVal eDI_CUSTOMER As EDI_CUSTOMER) As IHttpActionResult 
     If Not ModelState.IsValid Then 
      Return BadRequest(ModelState) 
     End If 

     db.EDI_CUSTOMER.Add(eDI_CUSTOMER) 

     Try 
      db.SaveChanges() 
     Catch ex As DbUpdateException 
      If (EDI_CUSTOMERExists(eDI_CUSTOMER.ID)) Then 
       Return Conflict() 
      Else 
       Throw 
      End If 
     End Try 

     Return Created(eDI_CUSTOMER) 
    End Function 

私は期待通りにデータが渡されたクロームデバッガで見ることができますPOSTリクエストを発行しようとします。 "application/json"のコンテンツタイプを使用する場合、.NETコントローラは何も受信しません。 "application/x-www-form-urlencoded"のコンテンツタイプを使用すると、予想されるプロパティを持つオブジェクトが受信されますが、すべてのプロパティ値は空白です。

誰かが迷っていることを知っていますか?私は以下のように私の実行ブロックにシリアライズのようなjQueryのを使用するようにコードを追加する

+0

私はC#プログラマーですので、これは暗闇の中での一発です:ByValをByRefに変更するとどうなりますか? – lencharest

+0

これは多くのことがあります.JavaScriptサンプルとEDI_CUSTOMERインターフェイスを提供できますか?CORSを使用していますか? –

+0

Rogerioに感謝します。私はすべてが必要だとは思わない。投稿が送信されていることを確認することができ、オブジェクトが.NETで受信されたことがわかります。これはASP.NET&Angularで一般的によく見られる問題です。しかし、私が下に投稿した答えはこの問題を解決します。私のパッチ要求をすべて破ります。私はちょうど$ httpParamSerializerJQLikeを投稿用に使うしか方法がないとわからなくてはなりません。 –

答えて

0

ODATA 4を使用してい

.run(function($http, $httpParamSerializerJQLike) { 
     $http.defaults.transformRequest.unshift($httpParamSerializerJQLike); 
}) 

は私のために、この問題を解決しました。

関連する問題