перебирать DynamicJsonObject - PullRequest
       2

перебирать DynamicJsonObject

0 голосов
/ 27 января 2012

Я использую DynamicJsonModelBinder из сообщения в блоге для передачи моих данных JSON из JavaScript на мой ASP.NET MVC Controller как DynamicJsonObject.

Посмотрите сообщение в блоге: http://blog.duc.as/2011/06/07/making-mvc-3-a-little-more-dynamic/

Я преобразовал его для своего проекта в VB.NET: http://pastebin.com/p3cfHSab.

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 (obj.GetDynamicMemberNames()), но как мне использовать метод TryGetMember для доступа к значению члена?

1 Ответ

1 голос
/ 27 января 2012

Что вы можете сделать, это создать класс, а затем сериализовать этот 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

Код на стороне клиента:

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) {
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...