2012-04-03 71 views
2

我创建了一个View,它提示用户输入一些带有发票号码的记录并将它们保存到数据库中。现在有了新的要求,我们必须能够为一条记录节省1..N张发票号码。在数据库中没有问题,但我找不到一个干净的方式来改变视图和模型。 截至目前我在做这个:ASP.NET MVC3:使用jquery添加文本框并绑定到模型

<div class="editor-label"> 
      @Html.LabelFor(x => x.InvoiceNumber1) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(x => x.InvoiceNumber1) 
      @Html.ValidationMessageFor(x => x.InvoiceNumber1) 
     </div> 

为了满足新的要求,我必须创建某种它可以让用户添加额外的文本框(通过qjuery)的视图的按钮。但是,我将如何将这些动态添加的文本框绑定回表单提交的模型?

回答

2

检查http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspxhttp://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/您使用顺序索引,但为了能够使用javacript删除或添加行,您可以使用非顺序索引,如两个链接中所述。 Regards

+0

那里的优秀信息,真的帮助了我,我不知道如何将此信息传递给stackoverflow,但我会将其标记为答案 – hoetz 2012-04-03 13:53:21

2

假设你的模型如下:

// model 
public class InvoiceModel 
{ 
    public List<int> InvoiceNumbers { get; set; } 
} 

现在,如果你的名字你输入InvoiceNumbers[0]InvoiceNumbers[1]等,该值将被正确地绑定到模型的InvoiceNumbers财产。