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.CheckBoxFor 而不是@Html.CheckBox?

在大多数情况下,@Html.CheckBoxFor 应该可以很好地呈现由默认模型绑定器自动填充模型所需的标记。我没有用您的代码对此进行测试,因为我不太了解 Model 类中的内容。但是,如果 @Html.CheckBoxFor 不起作用,您可以轻松使用自定义模型绑定器。一个教程在这里:

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

于 2013-02-09T01:16:31.270 回答