2009-10-27 5 views
0

У меня есть объект Person, обладающий свойством «FirstName» и «LastName». «Лицо» также имеет отношение 1-n с объектом «Телефон». Объект «Телефон» имеет свойство «Число». Таким образом, человек может иметь несколько телефонных номеров.ASP.NET MVC Создать представление для объекта с первым дочерним объектом

На «PersonController» У меня есть действие «Создать», которое загружает строго типизированный вид, чтобы показать форму, где я могу создать новое «Лицо». Но помимо свойств человека я также хочу иметь возможность вводить первый дочерний объект телефона.

Этот код дает мне NullReferenceException:

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

В моем методе действий я называю мнение так:

Dim p As New Person 
Return View(p) 

Так как я могу создать объект и первый объект ребенка на один вид?

+0

Если вы передаете личность в качестве модели, должен ли ваш код не читать Model.Phones.SingleOrDefault(). Номер –

+0

Я использовал Model.Person.Phones.SingleOrDefault(). Это компилируется, но дает ошибку во время выполнения. –

ответ

1

Не так ли, потому что номер телефона телефона не был установлен и на самом деле пуст?

Итак, при создании нового человека вам также потребуется создать новый номер телефона.

erm нравится, как это Я (думаю), и мой VB ржавый;

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

Так Ессенции при создании нового человека, новый телефон должен быть создан и присоединен к новому человеку.

Вы можете сделать это лучше, переработав приведенный выше код в создании объекта Person так, чтобы всегда существовал новый объект Phone, прикрепленный к новому Человеку.

Имеет ли это смысл или я с базы?

+0

Да, это кажется правильным, поскольку вы создаете объект Person, вы также создаете объект Null Phone, пока он не будет заполнен, как указано выше. –

+0

Вы даже можете добавить код, который создает и добавляет этот первый объект телефона 'pp' к вашему конструктору/Class Initialize ... Таким образом, в любое время, когда вы создаете экземпляр нового человека, вы будете знать, что эта первая ссылка на телефон всегда будет там для тебя. – Funka

+0

Я сказал это! Но не так ясно! :) – griegs

Смежные вопросы