2010-04-18 4 views
3

1) Disons que j'ai un MyDataInfo de classe:Comment instancier une classe lorsque ses membres de propriété ne sont pas de types primitifs?

public class MyDataInfo 
{ 
    public int MyDataInfoID { get; set; } 
    public string Name { get; set; } 
} 

Aux fins de la fonctionnalité que je suis après, je l'ai créé une autre classe (MyData) dont les membres sont la propriété de type MyDataInfo.

2) Voici MyData

public class MyData 
{ 
    public MyDataInfo Prop1 { get; set; } 
    public MyDataInfo Prop2 { get; set; } 
} 

3) Et, voici ma méthode d'action

public ActionResult MyAction() 
{ 
    MyData myObject = new MyData(); 
    return View(myObject); 
} 

4) Enfin, dans mon Voir le modèle (qui est fortement typé et hérite de MyData)

<%= Html.Encode (Model.Prop1.Name) %> 
<%= Html.Encode (Model.Prop2.Name) %> 

Malheureusement, j'ai reçu une erreur "Objet non défini sur une instance d'un objet." Est-ce que je manque quelque chose ou y a-t-il une manière différente d'obtenir le même résultat?

Répondre

3

Vous avez instancié MyData, mais pas Prop1 et Prop2 que vous essayez d'accéder à la vue (Prop1 est nul, donc Model.Prop1.Name lèveront une exception). Vous devrez instancier ces propriétés:

public ActionResult MyAction() 
{ 
    var myObject = new MyData 
    { 
     Prop1 = new MyDataInfo(), 
     Prop2 = new MyDataInfo() 
    }; 
    return View(myObject); 
} 

Cela pourrait aussi être fait dans le constructeur de MyData:

public class MyData 
{ 
    public void MyData() 
    { 
     Prop1 = new MyDataInfo(); 
     Prop2 = new MyDataInfo(); 
    } 

    public MyDataInfo Prop1 { get; set; } 
    public MyDataInfo Prop2 { get; set; } 
} 
+0

+1 - bonne réponse. Je dois vraiment trouver un créneau horaire quand vous et d'autres ne sont pas collés à SO donc je peux obtenir des réponses. ;-) –

+0

@Darin Dimitrov - vous êtes toujours prompt à aider les autres. Merci beaucoup pour votre aide. – Richard77

Questions connexes