この問題について多くのことを検索した後、私はコミュニティに助けを求めています:
私はビューでそのようなことをしています ( @Html.Action または PartialView を使用している場合、問題は同じです
@for(int i= 0; i< Model.Contacts.Count(); i++)
{
@Html.EditorFor(m => m.Contacts[i] , "AccreditationContact" )
}
そのような古典的な EditorTemplate または PartialView があります
@model FrontOffice.Models.AccreditationStepSevenModel
<div>
@Html.LabelFor(m => m.Nom)
@Html.TextBoxFor(m => m.Nom)
@Html.ValidationMessageFor(m => m.Nom)
</div>
[There is a lots of other fields here]
フィールド「Nom」用に生成された html は次のようになります。
<input id="Contacts_0__Nom" name="Contacts[0].Nom" type="text" value="Doe" >
<input id="Contacts_1__Nom" name="Contacts[1].Nom" type="text" value="Doe1" >
<input id="Contacts_2__Nom" name="Contacts[2].Nom" type="text" value="Doe2" >
フォームを送信しても問題ありません。すべてのフィールドは、コントローラーのネイティブ ModelBinder によって配列に正しくバインドされます。
ここで、JavaScript で別の AccreditationStepSevenModel を動的に生成したいと思います。Jquery で $load を使用しました。問題は、生成された html が名前をインクリメントせず、同じ名前の複数のフィールドがあり、ModelBinder が機能しないことです...
私はjavascriptで名前を変更することを考えました.これはうまくいくでしょうが、より良い解決策はありますか?
ご協力いただきありがとうございます !