c# - 当类的属性成员不是原始类型时,如何实例化一个类?

标签 c# asp.net-mvc

1) 假设我有一个 MyDataInfo 类:

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

为了实现我所追求的功能,我创建了另一个类 (MyData),其属性成员属于 MyDataInfo 类型。

2) 这是我的数据

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) %>

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

我是不是遗漏了什么,或者是否有不同的方法来获得相同的结果?

最佳答案

您已经实例化了 MyData,但还没有实例化您试图在 View 中访问的 Prop1Prop2 (Prop1 为 null,因此 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; }
}

关于c# - 当类的属性成员不是原始类型时,如何实例化一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661606/

相关文章:

c# - 如何在 where 和 between 子句中查询 DBF(dbase) 文件日期类型字段

c# - TransactionScope - 基础提供程序在 EnlistTransaction 上失败。 MSDTC 被中止

asp.net-mvc - 在主视图中找到什么ASP.NET MVC Controller

c# - 将用户身份从 MVC 传递到 Web Api

c# - 启动后立即执行计时器?

c# - 在 C# 中使用 System.Decimal 进行数学运算

javascript - 保留提交时的值

asp.net-mvc - MVC4 中的 ELMAH 和 API Controller 未记录错误

c# - WebApi - 具有相同签名的多个 GET 操作 - 路由问题

asp.net-mvc - mvc 5 错误处理在第三个文件夹后不起作用