Wenn ich es statisch täte, würde ich es getan haben, wie Razor-Syntax folgt verwendet.
@for(int i = 0; i < Model.players.Length; i++)
{
@Html.EditorFor(m => m.players[i]);
}
Diese im folgenden Markup-Ergebnisse:
<input class="text-box single-line" id="players_0_" name="players[0]" type="text" value="Bob" />
<input class="text-box single-line" id="players_1_" name="players[1]" type="text" value="Sam" />
Also, wenn Sie zwei Eingänge javascript verwenden, die wie folgt aussieht und per Post an Ihren Controller, wird die Standard-Bindemittel ein Spieler Array mit 4 erstellen Artikel. Ich hoffe, du siehst das Geplapper.
<input class="text-box single-line" id="players_2_" name="players[2]" type="text" value="Pete" />
<input class="text-box single-line" id="players_3_" name="players[3]" type="text" value="Dirk" />
Es gibt einige Herausforderungen. Ich habe das schon einmal gemacht und hatte ein paar Probleme mit Löschungen. Ich kann mich nicht an die genauen Probleme erinnern und was ich getan habe, um es an diesem Punkt zu beheben.
Wenn alle Textfelder "Player" genannt werden, fügt der ModelBinder jedem Textfeld den Wert des Arrays hinzu. Die andere Möglichkeit besteht darin, jedes Textfeld mit einem Index zu benennen: players [0], players [1] usw., aber dann müssen Sie die Indizes verwalten und NICHT einen überspringen. –
Meinen Sie, dass es die Array-Zeichenkette standardmäßig erzeugt? – updev
Wenn jedes Textfeld den gleichen Namen hat, posieren Sie im Grunde "player = player1 & player = player2 & player = player3", was dazu führt, dass das Array automatisch vom ModelBinder –