Как связать несколько текстовых полей со свойством строки массива ViewModel?
В ссылке ниже есть кнопка "Добавить", которая позволяет добавить несколько текстовых полей, которые я использую в моем приложении.
http://jsfiddle.net/cN5SR/200/
Теперь я хочу знать, как я могу связать этот массив строковых значений с моей ViewModel.
скажем, если мое свойство во ViewModel, как показано ниже:
Public class MyViewmodel
{
Public string[] players { get; set; }
}
2 ответа
Стивен Сандерсон написал очень хороший пост в блоге именно на эту тему.
Если бы я делал это статически, я бы сделал это следующим образом, используя синтаксис Razor.
@for(int i = 0; i < Model.players.Length; i++)
{
@Html.EditorFor(m => m.players[i]);
}
Это приводит к следующей разметке:
<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" />
Так что, если вы добавите два входа, используя javascript, который выглядит следующим образом, и отправите его на свой контроллер, связыватель по умолчанию создаст массив игроков с 4 элементами. Я надеюсь, что вы видите скороговорку.
<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" />
Есть некоторые проблемы. Я делал это раньше, и у меня было несколько проблем с удалением. Я не могу вспомнить точные проблемы и что я сделал, чтобы исправить это в этот момент.