如何使用ViewModel数组字符串属性绑定多个文本框?

时间:2012-04-06 00:58:38

标签: jquery .net asp.net-mvc asp.net-mvc-3 c#-4.0

在下面的链接中有一个添加按钮,允许您添加我在我的应用程序中使用的多个文本框。

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

现在我想知道如何将该字符串值数组与我的ViewModel绑定。

假设我的ViewModel属性如下:

Public class MyViewmodel
{
   Public string[] players { get; set; }
}

2 个答案:

答案 0 :(得分: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个项目的player数组。我希望你能看到啪啪声。

<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" />

有一些挑战。我以前做过这个,并且有一些关于删除的问题。我不记得确切的问题以及我在这一点上做了什么来解决它。

答案 1 :(得分:0)

史蒂文桑德森正是在这个问题上写了very nice blog post