Вопрос по .net, asp.net-mvc, jquery, c#-4.0, asp.net-mvc-3 – Как связать несколько текстовых полей со свойством строки массива ViewModel?

2

В ссылке ниже есть кнопка «Добавить», которая позволяет вам добавлять несколько текстовых полей, которые я использую в моем приложении.

http://jsfiddle.net/cN5SR/200/

Теперь я хочу знать, как я могу связать этот массив строковых значений с моей ViewModel.

скажем, если мое свойство во ViewModel такое, как показано ниже:

<code>Public class MyViewmodel
{
   Public string[] players { get; set; }
}
</code>
Если все текстовые поля имеют название «игроки» ModelBinder добавит каждое значение текстового поля в массив. Другой вариант - присвоить каждому текстовому полю индекс с индексом: Players [0], Players [1] и т. Д., Но тогда вам нужно управлять индексами, а НЕ пропускать их. Nick Bork
если каждое текстовое поле имеет одно и то же имя, вы в основном изображаете «игрок = игрок1» и «игрок = игрок2» и «игрок = игрок3»; и это приведет к тому, что массив будет автоматически сконструирован ModelBinder Nick Bork
Вы имеете в виду, что он по умолчанию создаст строку массива? updev

Ваш Ответ

2   ответа
0

очень хороший пост в блоге именно на эту тему.

Error: User Rate Limit ExceededSee the FAQ where it mentions answers that are 'barely more than a link'.Error: User Rate Limit Exceeded
1

я бы сделал это следующим образом, используя синтаксис 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" />

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

Похожие вопросы