2009-10-27 2 views
0

'FirstName'및 'LastName'속성이있는 'Person'개체가 있습니다. 'Person'은 또한 'Phone'객체와 1-n 관계를가집니다. 'Phone'개체는 'Number'속성을가집니다. 사람이 전화 번호를 여러 개 가질 수 있습니다.ASP.NET MVC 첫 번째 자식 개체가있는 개체의보기 만들기

'PersonController'에는 강력하게 형식화 된보기를로드하여 새 '사람'을 만들 수있는 양식을 표시하는 '작성'작업이 있습니다. 하지만 그 사람의 속성 외에도 나는 첫 번째 전화 자식 개체를 입력 할 수 있기를 원합니다. 그래서 객체와의 첫 번째 자식 객체를 만드는 방법을

Dim p As New Person 
Return View(p) 

:이 같은 뷰를 호출 내 액션 메소드에서

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

:

이 코드는 나에게 NullReferenceException이 있습니다 단일보기?

+0

Person을 모델로 전달하는 경우 코드가 읽히지 않아야합니다. Model.Phones.SingleOrDefault(). 숫자 –

+0

Model.Person.Phones.SingleOrDefault(). Number를 사용했습니다. 이것은 컴파일하지만 런타임에 오류를 발생시킵니다. –

답변

1

전화 번호 개체가 설정되어 있지 않아 실제로 사실 null이 아니기 때문에 아닌가요?

그래서 새로운 사람을 만들 때 새 전화 번호 개체를 만들어야합니다.

erm 이처럼 (생각)이 VB는 녹슬니다.

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

그래서 본질에 새 휴대폰이 만들어지고 새로운 사람에 부착 할 필요가 새로운 사람을 만들 때.

위의 코드를 Person 객체의 생성으로 리팩터링하여 새 Person에 항상 새 Phone 객체가 추가되도록하면 더 잘 수행 할 수 있습니다.

이 의미가 있습니까?

+0

네, Person 객체를 생성 할 때 위와 같이 채워질 때까지 Null Phone 객체를 생성합니다. –

+0

생성자에 첫 번째 Phone 객체'pp'를 생성하고 추가하는 코드를 추가 할 수도 있습니다./Class Initialize ... 그러면 새로운 Person을 인스턴스화 할 때마다이 첫 번째 Phone Reference가 항상 존재 함을 알게 될 것입니다 너를 위해서. – Funka

+0

나는 그것을 말했다! 그러나 아주 명확하게 아닙니다! :) – griegs

관련 문제