2013-02-09 98 views
0

我知道要在發佈後獲取模型,我們需要在剃鬚刀視圖中編寫索引。我的模型有一個來自實體框架的實體,名爲Class,但是該實體具有屬性導航ICollection<Student>爲什麼在發佈我的模型爲空?循環索引

我的意思是,我需要暴露我的項目從類實體,但問題是,這是ICollection,我不知道如何暴露索引。

這裏是我的Razor視圖:

@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> 
} 

我能做些什麼讓我的帖子後,所有的模型?

回答

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> 
} 
1

你的意思是使用@ Html.CheckBoxFor而不是@ Html.CheckBox?

在大多數情況下,@ Html.CheckBoxFor應該能夠很好地執行渲染標記,以使默認模型綁定器自動填充模型。我沒有用你的代碼測試過,因爲我不太明白Model類中的內容。但是,如果@ Html.CheckBoxFor不起作用,則可以輕鬆使用自定義模型綁定器。在這一個教程是在這裏:

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

+0

是的,對不起,這是CheckBoxFor – 2013-02-09 01:24:32

相關問題