Я использую DynamicJsonModelBinder
из сообщения в блоге, чтобы передать данные JSON из JavaScript в мой ASP.NET MVC-контроллер как DynamicJsonObject
.итерация через 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 String Collection (obj.GetDynamicMemberNames()
), но как использовать метод TryGetMember для доступа к значению члена?
Я не разработчик VB, но вы можете не получить доступ к значениям в качестве словаря? ex 'obj [" ID "]' – Lester
Да, мне было интересно, почему доступ к значениям в качестве словаря не работает, хотя имеется частный член _dictionary. – terabaud