在MVC中:通过jQuery复制视图元素并在相关控制器上检索它们的值

这是我的看法:

@model PhoneBook.Models.Number @{ ViewBag.Title = "Create"; } 

Create

@using (Html.BeginForm()) { @Html.ValidationSummary(true) @Html.HiddenFor(model => model.Contact.Id)
Number
@Html.LabelFor(model => model.PhoneNumber)
@Html.EditorFor(model => model.PhoneNumber) @Html.ValidationMessageFor(model => model.PhoneNumber)
@Html.LabelFor(model => model.NumberKind)
@Html.DropDownListFor(model => model.NumberKind.Title, NumberKinds)

}

我需要按下“添加新”按钮

所有元素复制并在按下提交按钮时我可以实现所有值。

现在我使用这个脚本:

 $(document).ready(function () { $('.AddNew').click(function () { $(".TargetElements:first").clone().insertAfter('.TargetElements'); }); }); 

但是这有两个问题:1-当我第一次添加一个div(包括目标元素)时添加但是在第二次添加两个div并且在升序2中增长时复制元素添加了目标元素的所有值但是我需要空输入以添加新值

我该如何修复脚本?

最后我不知道如何检索控制器中所有元素的值:

 [HttpPost] public ActionResult Create(Number NewNumber, FormCollection collection) { } 

1-当我第一次添加一个div(包括目标元素)时添加,但在第二次添加两个div并以升序增长。

在每个存在的字段后插入新字段,请查看:$(“。TargetElements:first”)。clone()。 insertAfter(” TargetElements。);

应该是:$(“。TargetElements:first”)。clone()。 insertAfter( ‘TargetElements:最后一次。’);

2-复制元素时所添加的目标元素的所有值,但我需要空输入来添加新值

没有人阻止您使用Javascript清除值,只需浏览新克隆中的所有输入元素并清除它们的值。

 function cloneTargetBox() { var targetBoxClone = $(".target-elements:first").clone(); targetBoxClone.find("input").val(""); //Not sure this is the proper way, but hey, it works targetBoxClone.insertAfter(".target-elements:last") } 

以下是您想要实现的代码示例: http : //jsfiddle.net/KVqW8/3/