How do I save multiple data from dynamically added textbox via javascript? I have done the dynamically added textbox for product list and payment terms. What should I do for the controller and View
I have test This but didn't work
here is my controller
public ActionResult Create([Bind(Include = "PurchaseInvoiceTable,PurchaseInvoiceDetailsTable,PaymentTerm")]InvoiceWrapper model)
{
try
{
if (ModelState.IsValid)
{
db.PurchaseInvoiceTables.Add(model.PurchaseInvoiceTable);
db.SaveChanges();
var PID = model.PurchaseInvoiceTable.PurchaseInvoiceID;
model.PurchaseInvoiceDetailsTable.InvoiceID = PID;
model.PaymentTerm.InvoiceID = PID;
db.PurchaseInvoiceDetailsTables.Add(model.PurchaseInvoiceDetailsTable);
db.PaymentTerms.Add(model.PaymentTerm);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.InvoiceID = new SelectList(db.PurchaseInvoiceTables, "PurchaseInvoiceID", "PurID", model.PurchaseInvoiceDetailsTable.InvoiceID);
ViewBag.InvoiceID = new SelectList(db.PurchaseInvoiceTables, "PurchaseInvoiceID", "PurID", model.PaymentTerm.InvoiceID);
return View(model);
}
catch (DbEntityValidationException e)
{
//catch validation here
}
}
Here is my invoiceWrapper
using System;
using System.Collections.Generic;
namespace OnlineInvoiceSystem.Models
{
public class InvoiceWrapper
{
public PurchaseInvoiceTable PurchaseInvoiceTable { get; set; }
public PurchaseInvoiceDetailsTable PurchaseInvoiceDetailsTable { get; set; }
public PaymentTerm PaymentTerm { get; set; }
}
}
here is my javascript You can test it on Jsfiddle
my view is this
@model OnlineInvoiceSystem.Models.InvoiceWrapper
@{ Layout = null; Layout = "~/Views/Shared/_Layout.cshtml"; }
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<form>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<h2>Product List</h2>
<div class="panel panel-default product_wrapper">
//dynamic added textbox will appear here
</div>
<button class="add_field_button btn btn-primary pull-right">Add More Fields</button>
<div class="wrapper-payment-details">
<tr style="background-color:black; color:white;" class="payment_term_wrapper">
// here is the dynamic added payment terms textbox
</tr>
</div>
<div class="form-group">
<div>
<input type="submit" value="Create" class="btn btn-primary pull-right" /> @Html.ActionLink("Back", "Index", null, new { @class = "btn btn-small btn-danger pull-right", @style = "margin-right:2%;" })
</div>
</div>
</form>
}