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) %>
不幸的是,我收到错误“对象未设置为对象的实例。”
我是否遗漏了某些东西,或者有不同的方式获得相同的结果?
答案 0 :(得分:3)
您已实例化MyData
,但未尝试在视图中访问的Prop1
和Prop2
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; }
}