Я использую 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 для доступа к значению члена?