的獲取多條目(的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