C# 为什么发布后我的模型为空?循环索引

C# 为什么发布后我的模型为空?循环索引,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我知道要在发布后获得模型,我们需要在razor视图中编写索引。我的模型有一个来自实体框架的名为Class的实体,但该实体有enICollection属性导航 我的意思是,我需要从类实体中暴露我的项,但问题是这是ICollection,我不知道如何暴露索引 以下是我的观点: @model Contoso.MvcApplication.Models.Assignment.ShareAssignmentViewModel @{ ViewBag.Title = "ShareAssignment

我知道要在发布后获得模型,我们需要在razor视图中编写索引。我的模型有一个来自实体框架的名为Class的实体,但该实体有en
ICollection
属性导航

我的意思是,我需要从类实体中暴露我的项,但问题是这是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>
}
@model Contoso.mvcapapplication.Models.Assignment.ShareAssignmentViewModel
@{
ViewBag.Title=“ShareAssignment”;
}
共享分配:@Model.Assignment.Name
@对于(int i=0;iModel.Classes[i]。学生//现在怎么办??[j])
}
}

发布后如何获取所有模型?

您的意思是使用@Html.CheckBoxFor而不是@Html.CheckBoxFor吗

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


您的意思是使用@Html.CheckBoxFor而不是@Html.CheckBox吗

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

@model Contoso.mvcapapplication.Models.Assignment.ShareAssignmentViewModel
@{
ViewBag.Title=“ShareAssignment”;
}
共享分配:@Model.Assignment.Name
@对于(int i=0;i
@model Contoso.mvcapapplication.Models.Assignment.ShareAssignmentViewModel
@{
ViewBag.Title=“ShareAssignment”;
}
共享分配:@Model.Assignment.Name
@对于(int i=0;i
是的,对不起,这是CheckBoxFor是的,对不起,这是CheckBoxFor
@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>
}