2012-05-28 5 views
1

MVC 모델 바인딩에 유용한 정보가 상당히 많습니다. 내 문제는 대부분 데이터 라우터로 작동해야하므로 내 MVC 응용 프로그램에서 강력한 형식의 데이터를 만드는 것을 피하려고한다는 사실에서 유래합니다.jQuery와 MVC 컨트롤러 액션간에 구조화되지 않은 JSON 전달

기본적으로 페이지에 입력란이 있는데, 입력란은 jQuery('.input')으로 수집 할 수 있으며, 반복해서 반복하여 자바 스크립트 개체에 넣을 수 있습니다. 나는

이 간접의 낭비 수준처럼 보인다
public JsonResult CaptureInput(string inputDataAsJsonString) 
{ 
    JavaScriptSerializer JSON = new JavaScriptSerializer(); 
    object inputData = JSON.DeserializeObject(inputDataAsJsonString); 

, 나는 데이터를 전달하기 위해 원합니다있는 C#을 측면에서

var inputData = my_serialize($('input'); 
$.ajax({ 
    type:'POST', 
    url: '/acme/Ajax/CaptureInput', 
    dataType: "json", 
    data: { inputData: JSON.stringify(inputData) }, 
    success: Page_Response_RegisterAndDeposit, 
    error: Page_AjaxError 
}); 

: 그때 내 ASP.NET MVC 컨트롤러에이를 보내 contentType : application/json으로, CaptureInput은 object 또는 IDictionary 또는 심지어 dynamic을 허용합니다.

+1

그리고 : 당신은 어떤 유형이 될 수있는 입력 요소를 포함하는 양식을 가지고 이제 가정하자 다음과 같은 컨트롤러 액션 호출 할 :

여기
public ActionResult CaptureInput(Dictionary<string, string> values) { ... } 

계속 진행 할 수있어 어떻게 JSON으로 보내시겠습니까? – LukLed

+0

결국 동일한 코드를 사용하여 재귀 적으로 정의 된 js 객체를 포함하는 더 많은 구조화 된 데이터를 보내려고하기 때문에. JSON은 이름 - 값 쌍보다 더 적합합니다. –

+0

관련/dupe : http://stackoverflow.com/questions/5473156/how-to-get-a-dynamically-created-json-data-set-in-mvc-3-controller http : // stackoverflow. co.kr/questions/5022958/passing-dynamic-json-object-to-c-sharp-mvc-controller –

답변

0

정확하지는 않지만이 문제의 해결책은 포함 된 사전을 사용하여 간단한 래퍼 개체에 바인딩 할 수 있도록하여 부분적인 해결 방법을 제공 할 수 있습니다. 사전에 직접 바인딩 할 수도 있습니다. 확실하지 ... 당신은 또한해야 할 수도 있습니다 명시 적으로 $ 아약스 호출

"JSON model binding for IDictionary<> in ASP.NET MVC/WebAPI"

1

당신은 serializeArray 방법을 사용할 수있는 json으로의 ContentType 헤더를 설정합니다. 당신을 왜

<script type="text/javascript"> 
    var values = $('form').serializeArray(); 
    var data = {}; 
    $.each(values, function (index, value) { 
     data['[' + index + '].key'] = value.name; 
     data['[' + index + '].value'] = value.value; 
    }); 

    $.ajax({ 
     url: '@Url.Action("CaptureInput")', 
     type: 'POST', 
     contentType: 'application/json', 
     data: JSON.stringify(data), 
     success: function (result) { 
      alert('success'); 
     } 
    }); 
</script> 
관련 문제