Reputation: 21641
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 functionality 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?
Upvotes: 3
Views: 92
Reputation: 1038880
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; }
}
Upvotes: 3