У меня есть модель, как это в JavaScript:Passing модель с динамическим объектом JSon в контроллер MVC
function SomeModel()
{
this.Id = ko.observable();
this.Name = ko.observable();
this.MetaData = {};
}
Тогда мне нужно отправить это MVC, так что я может сохраняться его в MongoDB, но я не знаю, как это лучше всего хранить метаданные в C# представлении ... как модель выглядит следующим образом:
public class SomeModel
{
public Guid Id {get;set;}
public string Name {get;set;}
public object MetaData {get;set;}
}
Однако это не любит связывать объект JSON к объекту, я не уверен, если я должен использовать в ExpandoObject или что-то , так как я не очень беспокоюсь о доступе к данным в службе C# mvc, это onl y для плагинов в переднем конце, которые могут хранить свои собственные данные на объекте для использования позже. Так пример может быть:
var someModel = new SomeModel();
someModel.MetaData.Bookmarks = [];
someModel.MetaData.Bookmarks.push({ location: 120, document: 23003032 });
Так он может содержать что-нибудь и суб объекты, и, как я говорю, что нужно просто затыкать его в объект только в качестве транспортного механизма Монго, что позволит сэкономить его штраф, как его схема меньше.
В настоящее время модели JS отправляются через ajax через Jquery и автоматически привязаны к контроллеру, а затем отправляются в репозиторий.
== Edit ==
Я сделал несколько небольших тестов с MVC4, и я могу поместить объект EXPANDO в моих моделях и он населен, однако, кажется, только хранить 1 слой данных, так если бы я была обратной передачи:
...,
MetaData: {
something: {
one: 1,
two: 2
}
},
...
я бы в конечном итоге с моей EXPANDO объекта для поля MetaData знающего о something
поле, но не будет хранить любые данные ниже этого первого обхода, так есть ли способ хранить выше, чем превращать его в строку json для хранения?