tags:

views:

36

answers:

1

Hello,

1) Let's say I've a class MyDataInfo

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

For the purpose of the fuctionality I'm after, I've created another class (MyData) whose property members are of MyDataInfo type.

2) Here's myData

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

3) And, here's my action method

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

4) Finally, this in my View template (which is strongly typed and inherits from MyData)

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

Unfortunately, I got an error "Object not set to an instance of an object."

Am I missing something or is there a different way of obtaining the same result?

Thanks for helping

+3  A: 

You've instantiated MyData, but not Prop1 and Prop2 which you are trying to access in the view (Prop1 is null, so Model.Prop1.Name will throw an exception). You will need to instantiate these properties:

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

This could also be done in the constructor of MyData:

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

    public MyDataInfo Prop1 { get; set; }
    public MyDataInfo Prop2 { get; set; }
}
Darin Dimitrov
+1 - good answer. I really do have to find a time slot when you and some others are not glued to SO so I can get some answers in. ;-)
Sky Sanders
@Darin Dimitrov -- you are lways prompt to help others. Thanks a lot for help.
Richard77