2017-12-23 3 views
1

json 형식의 게시 된 데이터를 내 컨트롤러에 보내고 싶습니다. 실제로 그것은 페이팔 결제 웹 훅 통화 문제에 사용됩니다. 이미 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"); 
} 
관련 문제