0

データベースに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())

しかし、これが正しいことかどうかはわかりません。

4

1 に答える 1

1

最善の解決策は、プログラムのコレクションをビューに渡すことです。

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

したがって、プログラムの詳細を表示する別の部分ビューを作成する必要があります。これをタブのように整理したい場合は、jqueryタブのようなものを使用する必要があります

RenderPartialまたはRenderActionだけでactionlinkを使用する必要はありません

于 2012-06-20T18:33:46.437 に答える