如何在其属性成员不是原始类型时实例化一个类?

时间:2010-04-18 08:34:29

标签: c# asp.net-mvc

1)假设我有一个MyDataInfo类:

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

为了我之后的功能,我创建了另一个类( MyData ),其属性成员是MyDataInfo类型。

2)这是MyData

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

3)而且,这是我的行动方法

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

4)最后,这在我的View模板中(强类型继承自MyData

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

不幸的是,我收到错误“对象未设置为对象的实例。”

我是否遗漏了某些东西,或者有不同的方式获得相同的结果?

1 个答案:

答案 0 :(得分:3)

您已实例化MyData,但未尝试在视图中访问的Prop1Prop2 Prop1为空,因此Model.Prop1.Name会抛出异常)。您需要实例化这些属性:

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

这也可以在MyData的构造函数中完成:

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

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