2015-11-11 4 views
0

У меня есть две модели:Как совместить модель списка другой модели в ASP.NET MVC3

public class Model1 
    { 
     public int? Id { get; set; }  
     public string Name{ get; set; } 
     private IList<Model2> _model2; 
    } 

    public class Model2 
     { 
      public string Name2{ get; set; } 
     } 

JSON данных для Ajax вызова:

[ 
    { 
    "Id": 1, 
    "Name": "Foo", 
    "Name2": "Foo2" 
    }, 
    { 
    "Id": 2, 
    "Name": "Foo3", 
    "Name2": "Foo4" 
    } 
] 

контроллер действия:

public ActionResult Save(List<Model1> models) 
     { 
     } 

Таким образом, я не получаю Name2 в действии контроллера. Есть ли способ получить Name2 в контроллере?

Я знаю, что это можно решить, создав еще одну модель. например

public class Model3 
     { 
      public int? Id { get; set; }  
      public string Name{ get; set; } 
      private Model2 _model2; 
     } 

Но я не хочу создавать новый класс модели. спасибо ....

+0

'' _model2 ": [{" Name2 ":" Foo2 "}]' –

+0

Я читаю данные из excel с помощью JS-плагина, он возвращает данные в этом формате ..... Должен ли я преобразовывать данные в ваш предлагаемый формат на стороне клиента? –

+0

Я предлагаю, чтобы было проще просто создать модель представления как указано (ваш «Модель3»), а затем перевести ее обратно в «Модель1» в контроллере. –

ответ

1

JSON данные должны быть в этом формате

[ 
    { 
    "Id": 1, 
    "Name": "Foo", 
    "_model2":[{"Name2": "Foo2"}] 
    }, 
    { 
    "Id": 2, 
    "Name": "Foo3", 
    "_model2":[{"Name2": "Foo4"}] 
    } 
] 
+0

Можете ли вы предоставить способ конвертировать данные JSON в ваш формат? –

+0

как вы создаете данные json? – Rakin

+0

yes ............ –

1

Вы можете получить Model1 из model2, как это;

public class Model1:Model2 
{ 
    public int? Id { get; set; }  
    public string Name{ get; set; }   
} 

Теперь вы должны увидеть Name2 как свойство в Model1, и ваш Json должен работать так, как есть.

+0

У меня уже есть один базовый класс для 'Model1' :( –

+0

Я не вижу базового класса в вашем коде, даже если у вас есть это, вы сможете сделать this: public class Model1: MyBaseClass, Model2 –

+0

Да, ур права, базовый класс здесь не упоминается. Если я добавлю «Model1: MyBaseClass, Model2», я столкнулся с ошибкой «Model1 не может иметь несколько базовых классов» –

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