2009-10-27 94 views
0

我有一個'Person'對象,它具有'FirstName'和'LastName'屬性。 'Person'與'Phone'對象也有1-n關係。 'Phone'對象具有'Number'屬性。 所以一個人可以有多個電話號碼。ASP.NET MVC爲第一個子對象創建視圖

在'PersonController'上我有一個'Create'動作,加載一個強類型的視圖來顯示一個表單,我可以創建一個新的'Person'。但除了這個人的屬性,我也希望能夠輸入第一個電話子對象。

此代碼給了我一個NullReferenceException:

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

在我的操作方法我稱之爲像這樣的觀點:

Dim p As New Person 
Return View(p) 

所以,我怎麼可以創建一個對象,並在第一個孩子對象單一視圖?

+0

如果你傳遞Person作爲你的模型,你的代碼不會讀取Model.Phones.SingleOrDefault()。Number – 2009-10-27 20:12:50

+0

我用Model.Person.Phones.SingleOrDefault()。Number。這會編譯,但會在運行時發生錯誤。 – 2009-10-27 20:41:08

回答

1

是不是因爲電話號碼對象尚未設置,實際上是空的?

所以,當你創建一個新的人,你還需要創建一個新的電話號碼對象。

呃像這樣我(想)和我的VB是生鏽的;

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

所以在essense當你創建一個新的人新的手機需要創建並連接到新的人。

通過將上述代碼重構爲Person對象的創建,您可以更好地實現這一點,以便始終有一個新的Phone對象附加到新Person。

這是否有意義或我離開基地?

+0

是的,這似乎是正確的,因爲您正在創建一個Person對象,您還正在創建一個Null Phone對象,直到它按上述方式填充爲止。 – 2009-10-27 21:24:27

+0

你甚至可以選擇添加創建這個第一個Phone對象的代碼並將它添加到你的構造函數/類Initialize ...這樣,任何時候當你實例化一個新的Person時,你都會知道這個第一個Phone引用永遠是在那裏爲你。 – Funka 2009-10-28 03:33:44

+0

我說過!但不是很清楚! :) – griegs 2009-10-28 03:47:40

相關問題