如何动态创建部分视图

时间:2012-06-20 18:12:36

标签: asp.net-mvc-3 partial-views

我的数据库中有一个名为Programs的表。我想为每个程序显示一个选项卡。我正在尝试创建一个部分视图来执行此操作,然后我想将部分视图包含到需要具有这些选项卡的每个视图中。我的部分视图如下所示。

<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())

但是我不确定这是否正确。

1 个答案:

答案 0 :(得分: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