使用HTML.TextBoxFor循环遍历模型中的项目

时间:2016-07-05 14:16:56

标签: c# asp.net-mvc razor

可能是一个愚蠢的问题,但我是MVC的新手。

到目前为止,在我的剃刀中,我可以说@HTML.TextBoxFor(t => t.EmailAddress) 但现在我有一个for-each:

foreach(var q in Model.Questions)
{
  // so here the t => t.EmailAddress  syntax is not working anymore.
}

我在上面的代码示例中问了我的问题。因此,当我在for-each循环中时,我如何才能使用@HTML.TextBox?因为现在它不再获得lambda语法。

2 个答案:

答案 0 :(得分:13)

请勿使用foreach,因为当您尝试将输入绑定回模型时,这会导致问题。而是使用for循环:

for (var i = 0; i < Model.Questions.Count(); i++) {
    @Html.TextBoxFor(m => m.Questions[i])
}

另见Model Binding to a List MVC 4

答案 1 :(得分:5)

您必须使用for循环来完成此操作,因为您需要将元素的实际索引绑定到name属性,该属性用于确保您的值是正确发布到服务器:

@for (var q = 0; i < Model.Questions.Count(); q++) { 
    // This will bind the proper index to the appropriate name attribute
    @Html.TextBoxFor(x => x.Questions[q])
}