簡単な答えは恐れることはありません.formCollectionには基本的なキーと値の情報のみが含まれています.
コントローラーに入ったら、その情報を再水和する方が簡単でしょうか? なんらかのメカニズムを使用して、渡したものを識別します。
別の方法として、基本タイプにマップされるコントロールのリストがある場合は、各コントロールをループできます。
MVC はちょっとした魔法で、プロパティをモデルやリストにマップすることができます。
コントロールのリストを持つモデルがある場合:
public class Control
{
String Value {get; set;}
String Attribute1 {get; set;}
}
public class ControlViewModel
{
IList<Control> Controls {get; set;}
}
次に、あなたの見解で:
for(var i = 0; i<controls.Count;i++)
{
// Obviously this isnt complete right i needs to increment from 0; would be build using your htmlhelpers.
<input id="Controls[i]_Value" name="Controls[i].Value" type="text" value="hello" />
<input id="Controls[i]_Attribute1" name="Controls[i].Attribute1" type="hidden" value="Attribute" />
}
httppost アクションで を収集するControlViewModel
と、Controls
リストにデータが入力されます。
私はこれをテストしていません。おそらくたくさんのエラーがありますが、始めるにはこれで十分です。これについて議論している投稿があります。投稿後に見つけた場合は追加します。