2011-01-03 2 views
0

Модель ::::создания списка пользовательских объектов в контроллере MVC2

public class Model1 

    { 

     public string Name { get; set; } 

     public string ProductName { get; set; } 

    } 

ViewModel ::::

public class ViewModel1 

    { 

     public List<Model1> model1; 

    } 

контроллер :::::::::

var sent = entities.Table1.Where<Table1>(o => o.SenderUserId == userId); 

      ViewModel1 newViewModel = new ViewModel1(); 

      foreach (Table1 gf in sent) 

      { 

       var nmodel = new Model1(); 

       nmodel.Name = gf.Name; 

       nmodel.ProductName = doSomething(gf.ProductName); 

       // **Here I'm stuck====how do I add nmodel to newViewModel** 

       //**newViewModel.Add===does not work** 

      } 

      return View(newViewModel); 
+0

Вы получаете нулевое ссылочное исключение? Можете ли вы уточнить, что «не работает»? – Brook

+0

Я не получаю 'Добавить', поскольку viewModel не имеет метода добавления. – Arnab

ответ

1

Быстрое предположение, основанное на коде, опубликованном вами, заключается в том, что вы никогда не создавали экземпляр коллекции.

public class ViewModel1 
{ 
    List<Model1> model1; 
    public ViewModel1() 
    { 
     model1=new List<Model1>(); 
    } 
} 
...... 
newViewModel.model1.Add(nmodel); 
+0

Извините, я сменил код, его фактически public List model1; – Arnab

+0

Да, я вижу, что это общедоступно. Вам все равно нужно создать экземпляр, прежде чем вы сможете позвонить в Add. Я добавил правильный синтаксис, чтобы добавить к нему. – Brook

+0

Большое спасибо, у меня такое чувство, что это сработает, просто еще одна вещь: var sent = entities.Table1.Where (o => o.SenderUserId == userId) иногда дает мне нулевые значения. – Arnab

1

Измените свой ViewModel следующего ViewModel ::::

public class ViewModel1 
{ 
    public List<Model1> model1 = new List<Model1>(); 
} 

Изменить ваш контроллер следующим образом:

var sent = entities.Table1.Where<Table1>(o => o.SenderUserId == userId); 
ViewModel1 newViewModel = new ViewModel1(); 
foreach (Table1 gf in sent) 
{ 
     var nmodel = new Model1(); 
     nmodel.Name = gf.Name; 
     nmodel.ProductName = doSomething(gf.ProductName); 
     newViewModel.model1.Add(nmodel); 
} 

return View(newViewModel); 
+0

y, вот что сказал ручей, хотя ур ответ будет более ясен новым людям, просто добавьте '()' в viewmodel, спасибо за ваш ответ – Arnab

+0

Добавил его ... thx – Chandu

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