的获取多条目(的jQuery在飞加时)的值,这是我的控制器:如何针对ASP.NET MVC
public ActionResult Create() {
Number newNumber = new Number();
return View(newNumber);
}
和查看:
@model PhoneBook.Models.Number
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<script src="../../Scripts/jQuery.AddNewNumber.js" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Contact.Id)
<fieldset>
<legend>Number</legend>
<div class="TargetElements">
<div class="editor-label">
@Html.LabelFor(model => model.PhoneNumber)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PhoneNumber)
@Html.ValidationMessageFor(model => model.PhoneNumber)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.NumberKind)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.NumberKind.Title, NumberKinds)
</div>
</div>
<p>
<input class="AddNew" value="Add New" type="button" /></p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
截至发稿的AddNew按钮(使用jQuery AddNewNumber.js)新的输入+ DropDown添加到客户端。这是脚本:
$(document).ready(function() {
$('.AddNew').click(function() {
var targetcloneelements = $(".TargetElements:first").clone();
targetcloneelements.find('input').val('');
targetcloneelements.insertAfter('.TargetElements:last');
});
});
这样(新增)很平常,我们都可以看到,在许多网站(所以必须有一个解决方案),但在检索值的问题。当我有一个输入元件(包括输入+下拉)我可以检索像在我的控制器的职位以下值:
[HttpPost]
public ActionResult Create(Number NewNumber, FormCollection collection) {
db.Numbers.Add(NewNumber);
db.SaveChanges();
return RedirectToAction("Index")
}
我读这文章:1,2,3但他们都没有任何不解决方案为飞行模式添加条目,当我知道实体的数量,它可能是可能的,但在飞行模式下,它可以是1或1000
那么,有什么办法来检索值并将它们添加到数据库?
编辑:
我找到的FormCollection的值,但还没有我不知道如何从收集提取出来?这是集合值的图片在breakponit
EDIT2的结合:
查找检索所有值:(每一个元素都有,在上述PIC看到一个键)
string[] PhoneNumbers = collection.GetValues("PhoneNumber");
这不是坏事,但对于任何新进入的客户端用户必须按提交按钮,它可以是1000点击而不是点击。 – Saeid
是的你是对的,但这种方式你有任何数据的原子控制:猜测用户插入50个新联系人,首先是错误的。你想让其他49也无效吗?只有插入的内容无效才更好吗?另一方面(但它不是很好),你也有一个较少的带宽使用。恕我直言。 –
嗯,我不确定带宽使用的少,但我认为这种方式(添加新条目并提交一次)是非常平常的,他们做什么来处理它?在你的回答旁边,我有兴趣提供一种方法。 – Saeid