2016-07-05 2 views
1

おそらくばかげた質問ですが、私はMVCが初めてです。HTML.TextBoxForを使用してモデル内のアイテムをループする

は、これまでのところ、私のカミソリで私が@HTML.TextBoxFor(t => t.EmailAddress) を言うことができるが、今、私はのために、それぞれの持っている:

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

私は上記のコードサンプルでは、​​私の質問をしました。だから私はfor-eachループの中にいるときにどうすれば@HTML.TextBoxを使うことができますか?今はラムダ構文をもはや得られないからです。

+2

'for'ループを使用すると(' foreach'は動作しません) - [この回答を参照](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943) –

答えて

4

foreachを使用しないでください。これは、入力をモデルに戻してバインドしようとすると問題が発生するためです。代わりにforループを使用します。

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

Model Binding to a List MVC 4参照してください。あなたは自分の価値観が適切にサーバーにポストされていることを確認するために使用されname属性にバインドする要素の実際のインデックスが必要になりますようにこれを達成するためにforループを使用する必要があります

2

@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]) 
} 
関連する問題