2012-06-20 105 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