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 中访问的 Prop1
和 Prop2
(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/