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

Jquery 如何使用ViewModel数组字符串属性绑定多个文本框?,jquery,.net,asp.net-mvc,asp.net-mvc-3,c#-4.0,Jquery,.net,Asp.net Mvc,Asp.net Mvc 3,C# 4.0,在下面的链接中有一个添加按钮,允许您添加我在应用程序中使用的多个文本框 现在我想知道如何将字符串值数组与ViewModel绑定 假设我在ViewModel中的属性如下所示: Public class MyViewmodel { Public string[] players { get; set; } } 如果我是静态的,我会使用Razor语法如下所示 @for(int i = 0; i < Model.players.Length; i++) { @Html.Editor

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

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

假设我在ViewModel中的属性如下所示:

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

如果我是静态的,我会使用Razor语法如下所示

@for(int i = 0; i < Model.players.Length; i++)
{
   @Html.EditorFor(m => m.players[i]);
}
@for(int i=0;im.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" />


还有一些挑战。我以前做过这件事,在删除方面有一些问题。我记不起确切的问题以及我在这一点上做了什么来解决它。

史蒂文·桑德森(Steven Sanderson)写了一篇关于这个主题的文章。

如果所有文本框都命名为“玩家”,ModelBinder会将每个文本框的值添加到数组中。另一个选项是为每个文本框命名一个索引:players[0],players[1],等等,但是您需要管理索引,而不是跳过一个。您的意思是默认情况下,它将生成数组字符串吗?如果每个文本框的名称相同,则基本上就是“player=player1&player=player2&player=player3”这将导致ModelBinder自动构建数组。虽然此答案已有一年多的历史,且链接很有用,但如果您将答案的重要部分发布在此处,或者您的帖子有被删除的风险,则会更好。如果您愿意,您仍可以包含此链接,但仅作为“参考”。答案应该是独立的,不需要链接。