2011-03-14 3 views
0

내보기에서 컬렉션의 내용을 표시하려고하지만 해당 특수 속성/개체에 대해보기의 정의를 처리하기 위해 DisplayTemplate을 사용하고 있습니다.컬렉션의 내용을 표시하는 ASP.NET MVC3 DisplayTemplate을 만드는 방법은 무엇입니까?

예 :

public string MyModel 
{ 
    public ICollection<Foo> Foos { get; set;} 
} 

<div class="display-label">Foos</div> 
<div class="display-field">@Html.DisplayTextFor(_ => Model.Foos)</div> 

와 foo는 개체입니다 ..

public class Foo 
{ 
    public string Name { get; set; } 
    public string Blah { get; set; } 
} 

하고 ... 그래서 나는이 컨트롤러 내보기 폴더에 DisplayTemplates라는 폴더를 만들었습니다. 내가 다음 파일에 추가 은 다음과 같은 내용

@model MyNamespace.....Foo 

@Model [@Model.Blah] @Model.Name 

그리고 난 내보기에 표시지고있는 것과 Foo.cshtml라고?

System.Collections.Generic.List`1 [MyNamespace에 ..... 푸]

. 이 컬렉션에 하나 이상의 항목이 있음을 확인했습니다. 아이디어가 있습니까?

+0

cshtml보기에서'@ Model'이 무슨 뜻인지 확실하지 않습니다. 목록을 인쇄 하시겠습니까? – gideon

+0

이 부분보기를 사용자 지정 개체에 강력하게 입력하고 있습니다. 예 : MyNamspace.Entities.Foo'. –

답변

1

내 대답 :

발견 I (잘못했다)

@Html.DisplayTextFor(_ => Model.Foos) 

하지만 난 DisplayTextFor하지만 DisplayFor

을 사용하고있다 안됩니다
@Html.DisplayFor(x => x.Model.Foos) 

또한 Steve SandersonPro ASP.NET MVC2 Framework (2nd Edition) .pdf 사본을 구입했으며 423 페이지에 그는 (나는 저작권에 대해 침해하지 않는다고 진심으로 희망합니다.)

예를 들어, 당신은 지금 인스턴스보기 단 한 줄의 예를 마크 업을위한을 가진 사람의 열거 수집을 렌더링 수 :

<%:Html.DisplayFor(x => x.MyPersonCollection) %> 
//This would render the Person.ascx partial once 
//for each item in the collection. 

그는 정확하고이 텍스트가 강조 내 실수.

승 :

+0

멋진! Sandersons 책은 꽤 굉장합니다! 아직 모든 것을 제대로 읽지 못했습니다! = P – gideon

0

나는 그것을해야한다고 생각 :

@model MyNamespace.....Foo 

[@:Model.Blah] @:Model.Name 

당신은 심지어 <text> 태그를 사용할 수 있습니다. 자세한 내용은

참조 스콧 특별시의 포스트 : ASP.NET MVC 3: Razor’s @: and syntax

+0

그래서 내 사용자 지정 DisplayTemplate이 하나의 클래스 인스턴스에 대한 것임을 제안하는 중입니다 ... 그래서 Foo의 컬렉션을 표시하려고한다는 사실은 문제가 아닙니다. 프레임 워크는 충분히 똑똑해야합니다. 컬렉션의 각 인스턴스에 대해 내 사용자 정의 DisplayTemplate을 표시합니까? –

+0

@ Pure.Krome 죄송합니다. Q .. 제가 생각할 수있는 한 가지 옵션은 모델'@IEnum '로 **보기 **를 가지고 있고 그보기 내에서 모델로 **보기 **를 호출 할 것입니다. 'Foo' – gideon