2012-06-20 2 views
0

내 데이터베이스에 프로그램이라는 테이블이 있습니다. 각 프로그램에 대한 탭을 표시하고 싶습니다.이 작업을 수행하기 위해 부분 뷰를 생성하려고하고 있는데, 그런 다음 해당 탭이 필요한 모든 뷰에 부분 뷰를 포함하고자합니다. 내 부분보기는 다음과 같습니다. 부분 뷰를 동적으로 생성하는 방법

<div id="tabs"> 

    <ul> 
     <li id="HomeTab">@Html.ActionLink("Dashboard", "Index", "Home")</li> 
     <li id="Program1Tab">@Html.ActionLink("Program1", "Index", "Program")</li> 
     <li id="Program2Tab">@Html.ActionLink("Program2", "Index", "Program")</li> 
    </ul> 
</div> 

는 동적으로
@foreach (var ptype in Model) 
    { 
     <li id=\"@ptype.Name\"Tab>@Html.ActionLink(ptype.Name, "Index", "Project")</li> 
    } 

그러나 내가 컨트롤러를 사용하지 않고 탭을로드 할 수 있는지 궁금 같은 것을 사용하여 탭을 만들 것을 희망하고있다. 헬퍼 클래스/메소드를 사용하여 컨트롤러를 우회하는 모델에 직접 액세스 할 수 있습니까?

업데이트 : 은 또한이 할 수있는 올바른 일이다 그러나 나는 확실하지 않다

@foreach (var ptype in MyProject.Helpers.ProgramTypes.ProgramTypesList()) 

를 사용하여 액세스하는 다음 도우미 메서드를

namespace MyProject.Helpers 
{ 
    public class ProgramTypes 
    { 
     public static List<ProgramType> ProgramTypesList() 
     { 
      MyDbContext db = new myDbContext(); 
      return db.ProgramTypes.ToList<Programtype>(); 

     } 
    } 
} 

을 만들고 의해 시도했다.

+0

는 당신이 편집기에서 볼나요 – superartsy

+0

보다 좀 더 code.see을 추가 JQuery와 탭 같은 것을 사용한다 템플릿? –

+0

예. 필자는 편집기 템플릿을 사용했습니다. 그들은 여전히 ​​"뷰"이며 모델에 직접 액세스 할 수 없습니다. – superartsy

답변

1

가장 좋은 해결책입니다 - 그래서 당신은 당신이 프로그램의 세부 사항을 표시합니다 다른 부분 뷰를 만들 필요가보기

@model IQueyrable<Program> 
<div id="tabs"> 
    <ul> 
    @foreach (var ptype in Model) 
    { 
     <li>@Html.RenderPartial("ProgramTab", ptype)</li> 
    } 
    </ul> 
</div> 

에 프로그램의 모음을 전달합니다. 이 같은 탭을 구성하려면 당신은

그냥 RenderPartial를 actionlink 사용할 필요가 없습니다 또는 RenderAction

+0

위의 편집을 참조하십시오. 그게 괜찮은지 확실하지 않습니다. – superartsy

+1

당신은 renderpartial 또는 renderaction 만 액션 링크를 사용할 필요가 없습니다. – Bohdan

+0

사용자 RenderAction에게 좋은 생각입니다. @Bohdan – superartsy

관련 문제