2011-01-03 5 views
0

Modell ::::Erstellen Liste der benutzerdefinierten Objekts in MVC2 Controller

public class Model1 

    { 

     public string Name { get; set; } 

     public string ProductName { get; set; } 

    } 

Ansichtsmodell ::::

public class ViewModel1 

    { 

     public List<Model1> model1; 

    } 

Controller :::::::::

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

Sie sind eine NULL-Verweis Ausnahme zu bekommen? Kannst du klarer über "funktioniert nicht" sein? – Brook

+0

Ich bekomme 'Add' nicht, da das ViewModel keine Add-Methode hat. – Arnab

Antwort

1

Eine schnelle Schätzung basierend auf dem Code, den Sie gepostet haben, besteht darin, dass Sie die Sammlung nie instanziiert haben.

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

Sorry, ich habe den Code geändert, es ist tatsächlich öffentliche Liste model1; – Arnab

+0

Ja, ich sehe, dass es öffentlich ist. Sie müssen es noch irgendwo instanziieren, bevor Sie Add aufrufen können. Ich fügte die korrekte Syntax hinzu, um es hinzuzufügen. – Brook

+0

Vielen Dank, ich habe das Gefühl, das wird funktionieren, nur eine andere Sache: var send = entities.Table1.Where (o => o.SenderUserId == userId) wird manchmal geben mir Nullwerte. – Arnab

1

ändern Sie Ihr Ansichtsmodell wie folgt Ansichtsmodell ::::

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

Ihren Controller wie folgt ändern:

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, das ist, was Bach sagte, obwohl Ihre Antwort wird klarer für neue Leute, nur fügen "()" in der Viewmodel, danke für Ihre Antwort – Arnab

+0

Hinzugefügt es ... thx – Chandu

Verwandte Themen