0

投稿後にモデルを取得するには、かみそりビューでインデックスを作成する必要があることを私は知っています。私のモデルには、Classというエンティティフレームワークのエンティティがありますが、そのエンティティにはICollection<Student>プロパティナビゲーションがあります。

つまり、Classエンティティからアイテムを公開する必要がありますが、問題は、これがICollectionであり、インデックスを公開する方法がわからないことです。

これが私のかみそりの見方です:

@model Contoso.MvcApplication.Models.Assignment.ShareAssignmentViewModel

@{
    ViewBag.Title = "ShareAssignment";
}

<h2>Share Assignment: @Model.Assignment.Name</h2>

@for (int i = 0; i < Model.Classes.Length; i++)
{
<section>
    <h3>@Model.Classes[i].Name</h3>

    @for (int j = 0; j < Model.Classes[i].Students.Count; j++)
    {
        @Html.CheckBox(modelItem => Model.Classes[i].Students // what now?? [j])
    }
</section>
}

投稿後にすべてのモデルを取得するにはどうすればよいですか?

4

2 に答える 2

2
@model Contoso.MvcApplication.Models.Assignment.ShareAssignmentViewModel

@{
    ViewBag.Title = "ShareAssignment";
}

<h2>Share Assignment: @Model.Assignment.Name</h2>

@for (int i = 0; i < Model.Classes.Length; i++)
{
   var studentsArray = Model.Classes[i].Students.ToArray();
<section>
    <h3>@Model.Classes[i].Name</h3>

    @for (int j = 0; j < studentsArray.Length; j++)
    {
        <input type="checkbox" 
               name="@(string.Format("Classes[{0}].Students[{1}]", i, j))" 
              value="@studentArray[j]" />
    }
</section>
}
于 2013-02-09T01:19:41.140 に答える
1

@Html.CheckBox ではなく @Html.CheckBoxFor を使用するということですか?

ほとんどの場合、@Html.CheckBoxFor は、既定のモデル バインダーによってモデルが自動的に設定されるために必要なマークアップを適切にレンダリングする必要があります。Model クラスの内容がよくわからないため、コードでこれをテストしていません。ただし、@Html.CheckBoxFor が機能しない場合は、カスタマイズされたモデル バインダーを簡単に使用できます。これに関する 1 つのチュートリアルは次のとおりです。

http://brendan.enrick.com/post/custom-model-binders-in-aspnet-mvc.aspx

于 2013-02-09T01:16:31.270 に答える