Как связать несколько текстовых полей со свойством строки массива 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" />

Есть некоторые проблемы. Я делал это раньше, и у меня было несколько проблем с удалением. Я не могу вспомнить точные проблемы и что я сделал, чтобы исправить это в этот момент.

Другие вопросы по тегам