2012-09-19 4 views
0

내가 여기에 주어진 허용 대답에 후속 질문이 있습니다 Two models in one view in ASP MVC 3는 하나 개의보기에서 여러 모델을 결합

은 내가 한보기의 내용을 나열하고 싶은 세 가지 모델, 유형, 원인, 위치를 가지고 있습니다. 나는이 결합 된 새로운 모델을 만들어 위의 링크에서 답을 바탕으로 다음과 같다 그 :

public class Combined 
    { 
     public IEnumerable<Place> Place { get; set; } 
     public IEnumerable<Type> Type { get; set; } 
     public IEnumerable<Cause> Cause { get; set; } 
    } 

내가 만든 그것을 IEnumerable을 <> 나는 그것을 이해 난 그냥 나열 할 때, 내가 원하는 이잖아 때문에 foreach 루프에서 이러한 모델의 내용. (난 그냥 먼저 테이블 중 하나를 나열하려고했다)

[ChildActionOnly] 
    public ActionResult overSightHeadings() 
    { 
     Combined Combined = new Combined(); 
     return View(Combined); 
    } 

그리고 마지막으로보기 : 그럼 내가보기에이 컨트롤러를 만들어

@model mvcAvvikelser.Models.Combined 
@{ 
    Layout = null; 
} 
<tr> 
@foreach (var Type in Model.Type) 
{ 
    <th> @Html.DisplayTextFor(ModelItem => Type.Name)</th> 
} 
</tr> 

이 코드 문제는 그것이 그 foreach 코드가 시작될 때 null 예외가 발생합니다. 내가 컨트롤러에서 잘못 모델을 초기화 한 그래서

System.NullReferenceException: Object reference not set to an instance of an object. 

나는 완전히 확실 나는 그것이 IEnumerable을 안 잘못 여기서 뭘하고 있지 않다 무엇?

+0

당신이 잘못하고있는 것은 당신이'Combined' 속성을 초기화하지 않았기 때문입니다. 목록이 비어 있습니다. – codingbiz

답변

1

[ChildActionOnly] 
public ActionResult overSightHeadings() 
{ 
    Combined combined = new Combined(); 
    combined.Types = new List<Type>(); 
    combined.Causes = new List<Cause>(); 
    combined.Places = new List<Place>(); 

    return View(Combined); 
} 
없어야 더 IEnumerable을 같은 아 파크 모델 생성자 에서이 목록을 초기화

시도 설정되지 않은

public IEnumerable<Type> Type { get; set; } 

처럼 보인다

속성 이름을 복수로 변경했습니다. 그것은 당신의 속성을 콜렉션으로 정의합니다.

+0

고마워요. 작동하는 것 같아서, 적어도 오류는 발생하지 않습니다. 보기는 결과를 반환하지 않는 것 같습니다. – Dennis

+0

값을 지정해야합니다. 이제 그들은 비어 있습니다. 그 값들은 어디서 얻었습니까? 그 값들을 가져 와서'new List ()' – codingbiz

+0

대신에 할당하십시오. Aah yes ofcourse. 당신이 설명했다고하자. 데이터베이스에서 값을 검색하고 새 목록 ()을 적절한 "연결"로 바꾼 다음 이제는 정상적으로 작동합니다. – Dennis

0

List<Type> Type = new List<Type>(); 
관련 문제