2017-12-23 20 views
1

json形式の投稿データを自分のコントローラに受信したいと考えています。実際には、それはpaypal支払いwebhook呼び出しの問題に使用されています。私は既にjsonデータの例を添付しました。アドバイスをしてください "FormCollection"は、この状況に最適なプラクティスであるjsonにアクセスすることをお勧めしますか?外部から投稿された着信Jsonデータを受信する方法

JSON:

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
    } 
}} 

コントローラー:

[HttpPost] 
public JsonResult ReceiveData(FormCollection data) 
{ 
    using (var ctx = new db_mydb()) 
    { 
    } 

    return Json("ok"); 
} 
+1

** FormCollectionを使用しないでください。代わりに、ViewModelクラスを使用します。これはhttp://json2csharp.com/を使用して生成できます。 –

+0

ViewmodelはJsonの投稿データを受信するのに適していますか? –

答えて

2

、データが受信されているためには、あなたがデータを保存するために、強く型付けされたモデル(複数可)を作成する必要があります構造やJSONとして来ています。

public class Menuitem { 
    public string value { get; set; } 
    public string onclick { get; set; } 
} 

public class Popup { 
    public IList<Menuitem> menuitem { get; set; } 
} 

public class Menu { 
    public string id { get; set; } 
    public string value { get; set; } 
    public Popup popup { get; set; } 
} 

public class PaypalWebhookModel { 
    public Menu menu { get; set; } 
} 

アクションは、目的のモデルを反映するように更新する必要があります。

[HttpPost] 
public JsonResult ReceiveData([FromBody]PaypalWebhookModel data) { 
    using (var ctx = new db_mydb()) { 
     //... 
    } 
    return Json("ok"); 
} 
関連する問題