2013-07-30 3 views
1

У меня есть модель, как это в 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 для хранения?

ответ

1

Как казалось, нет твердых ответов. Мне просто нужно было сделать дополнительный шаг в jQuery ajax для преобразования всех полей «метаданных» в строку json, а затем сохранить его как строку на сервере.

Тогда, если мне нужно, чтобы получить доступ или изменить данные, я использую веб-помощник Json.Encode/Decode который возвращает динамический, то я могу только добавить дочерние элементы, которые я делаю, как:

  • типа имени для простого прилежащим объекта JSon
  • Список для элемента массива

Тогда я просто закодировать его снова отливку динамический как объект.

Смежные вопросы