2012-06-20 107 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> 
    } 

但是我想知道我怎麼可以加載標籤不使用的控制器。我可以使用輔助類/方法直接訪問繞過控制器的模型嗎?

更新: 我還通過創建一個輔助方法

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

     } 
    } 
} 

,然後使用

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

訪問它們不過我不知道這是做正確的事嘗試。

+0

只是增加了一些更code.see – superartsy

+0

上面你看一下編輯器模板? –

+0

是的。我使用過編輯模板。它們仍然是「視圖」,無法直接訪問模型。 – superartsy

回答

1

最好的辦法是 - 通過節目收集到您的視圖

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

所以你必須創建另一個局部視圖,你會顯示程序的詳細信息。 如果你想舉辦這個標籤一樣,你應該使用類似jQuery的標籤

你不必使用ActionLink的公正的RenderPartial或的RenderAction

+0

請參閱我上面的編輯。我不確定那是不是okie。 – superartsy

+1

你不必使用actionlink只是renderpartial或renderaction – Bohdan

+0

好主意給用戶RenderAction。謝謝@Bohdan – superartsy