2012-01-27 3 views
0

블로그 게시물의 DynamicJsonModelBinder을 사용하여 JavaScript의 JSON 데이터를 ASP.NET MVC 컨트롤러 DynamicJsonObject으로 전달합니다. http://pastebin.com/p3cfHSab : http://blog.duc.as/2011/06/07/making-mvc-3-a-little-more-dynamic/DynamicJsonObject를 반복합니다.

내가 VB.NET 내 프로젝트를 변환 :

은 블로그 게시물에서보세요.

Imports System.Dynamic 
Imports System.Web.Helpers 


Namespace MyNameSpace 
    Public Class TestController 

     Inherits System.Web.Mvc.Controller 

     Function Index(<DynamicJson()> obj As DynamicJsonObject) As ActionResult 
      Dim output As String = "" 
      Dim members As IEnumerable(Of String) = obj.GetDynamicMemberNames() 
      For Each item In members 
       output += item + vbCrLf 
      Next 
      Return Content(output) 
     End Function 

    End Class 
End Namespace 

클라이언트 측 :

var jsonObject = { "ID": "123", "NAME": "Mr. Rosema", "TEST": "123"}; 
$.ajax({ 
    url: "/Test", 
    type: "POST", 
    contentType: "application/json", 
    data: 
     JSON.stringify(jsonObject) 
    , 
    success: function (data) { 
    } 
}); 

이 작동합니다. 내 컨트롤러에서 다음과 같이 jsonObject에 액세스 할 수 있습니다. obj.ID '123

그러나 모든 특성을 반복하는 방법은 아직 모릅니다. 모든 멤버 이름을 IEnumerable String Collection (obj.GetDynamicMemberNames())으로 가져올 수는 있지만 TryGetMember 메서드를 사용하여 멤버의 값에 액세스하려면 어떻게해야합니까?

+0

,하지만 당신은 사전에 따라 값에 액세스 할 수 없습니다? ex'obj [ "ID"]' – Lester

+0

네, 프라이빗 _dictionary 멤버가 있지만 사전에 값을 접근하는 것이 왜 작동하지 않는지 궁금합니다. – terabaud

답변

1

당신이 할 수있는 일은 클래스를 만든 다음 그 json을 당신에게 클래스로 직렬화하는 것입니다.

Class Info 
    public property ID as integer 
    public property NAME as string 
    public property TEST as string 
end class 

컨트롤러 코드 :

Function Index(byval input as Info) As ActionResult 
    Return Content(input.NAME) 
End Function 

클라이언트 측 코드 : I 아니에요 비주얼 베이직 개발자

var jsonObject = {"input": { "ID": "123", "NAME": "Mr. Rosema", "TEST": "123"}}; 
$.ajax({ 
    url: "/Test", 
    type: "POST", 
    contentType: "application/json", 
    data: JSON.stringify(jsonObject), 
    success: function (data) { 
    } 
}); 
+1

이것이 바로 json 데이터를 컨트롤러에 전달하는 방법입니다. 하지만 json 구조가 변경 될 때마다 모델 클래스를 다시 컴파일하지 않아도되는 방법을 찾고있었습니다. – terabaud