ASP.NET MVC使用第一个子对象为对象创建视图

时间:2009-10-27 19:32:37

标签: asp.net-mvc view parent-child

我有一个'Person'对象,它具有'FirstName'和'LastName'属性。 'Person'与'Phone'对象也有1-n关系。 'Phone'对象具有'Number'属性。 因此,一个人可以拥有多个电话号码。

在'PersonController'上我有一个'Create'动作,它加载一个强类型视图来显示一个我可以创建一个新'Person'的表单。但除了这个人的属性,我还希望能够输入第一个电话子对象。

这段代码给了我一个NullReferenceException:

Html.TextBox("Number", Model.Person.Phones.SingleOrDefault().Number)

在我的动作方法中,我调用这样的视图:

Dim p As New Person
Return View(p)

那么如何在一个视图上创建一个对象和一个第一个子对象呢?

1 个答案:

答案 0 :(得分:1)

是不是因为电话号码对象尚未设置且实际上是空的?

因此,当您创建新人时,您还需要创建一个新的电话号码对象。

像我这样(我想),我的VB生锈了;

Dim p as New person
Dim pp as new Phones
p.Phones.Add (pp)
return View(p)

因此,当你创建一个新人时,需要创建一个新手机并将其附加到新人身上。

你可以通过将上面的代码重构为Person对象的创建来做到这一点,这样总会有一个新的Phone对象附加到一个新的Person。

这是否有意义,还是我偏离基地?