2016-06-02 6 views
1

私はこれを数時間前に把握しようとしてきましたが、解決策のどれも役立たないようです。私はAngularJsとMVC6プロジェクトを持っています。私は接続することができるので、ルートが機能していて、文字列などをハードコードするとデータを取得できますが、サーバーに送信されたデータにアクセスできないようです。asp.net mvc6角度アバスデータを取得する

マイangularjs HTTP要求コード:私は "化するJsonResultデータ" としてデータを設定しようとしました

var app = angular.module('APIService', []); 
app.factory('APIService', function ($http) { 
    var api = {}; 

    api.getBuyer = function (data) { 
     return $http.post('/api/buyer', data); 
    } 

    return api; 
}); 

angularjs関数呼び出し

APIService.getBuyer({ Url: 'samirbashir5739', FirstName: 'Samir' }).success(function (res) { 

}); 

私のC#のコントローラー

namespace Reporting.api 
{ 
    [Route("api/buyer")] 
    public class BuyersController : Controller 
    { 
     // POST api/buyer 
     [HttpPost] 
     public string Post([FromBody] string Url) 
     { 
      return Url; 
     } 
    } 
} 

、または "文字列Url"私が見つけたほとんどのチュートリアルには、データのオブジェクトがあり、 "[FromBody] Buyer buyer"のようなものに収まるようになっていましたが、オブジェクトはありません。単にデータが必要です。出来ますか?

+0

最初のコードクロックでは、 '$ http.post()'呼び出しを約束します。次に 'res.success()'を実行していますが、すでに関数から返ってきたので、このコード行は – Rhumborl

+0

と呼ばれることはありません。これが役立つかどうかをご覧ください:http://stackoverflow.com/questions/30957248/how複数のパラメータを持つpost-in-angles-in-multiple-params/30957308#30957308 – Sajal

+0

ええ、私はそれを取ることを忘れていました。ありがとう – Samir

答えて

1

WEBAPIはポスト要求から結合複数のパラメータをサポートしていません。詳細はhereで確認できます。

したがって、WebApiの適切な方法は、バインドされるすべてのプロパティを含むリクエストモデルを作成することです。おそらく複数の[FromUri]パラメータを試すことができますが、.postに渡すのではなく、あなた自身がURLにURLを追加する必要があります。

例モデル:

public class RequestModel 
{ 
    public string Url {get;set;} 
    public string Name {get;set;} 
} 

私はまた、あなたが常にあなたのサーバーではなく、いくつかの動的なデータを扱うよりも、期待するもの知っているようにモデルを追加すると、あなたのコードの構造を改善することを信じています。

P.S. ASP.Net Coreを使用していることに気付かず、私のデータはWeb API 2からのものですが、おそらくまだ有効なので、モデルを作成する必要があります+ FromBodyは、デフォルトの動作であるため、

+0

ええ、あなたは正しいです。これを行う唯一の方法は、要求モデルを持つことです。あなたが提案したようにリクエスト・モデルを組み立てると、うまくいきました。 – Samir

1

あなたのコントローラは間違っていると思います。あなたのコントローラメソッドが単一のURLを待っているのに対して、あなたはURLと名前を渡そうとしています。 URLのみを渡すとうまくいくはずです。 あなたはURLとファーストネームを渡したい場合は、このようなあなたのコントローラメソッドを変更する必要があります。

[HttpPost] 
    public string Post([FromBody] string Url, string FirstName) 
    { 
     // Do whatever you need to do here ... 
    } 
+0

うん、私はあなたがそこに投稿したようなものを探しているので、私は両方の変数を処理することができますが、私はそのどちらかを取得することはできません、UrlとFirstNameは両方とも空です – Samir

関連する問題