Asp.net 如何在ASP MVC中将所有动态添加的文本框保存到数据库中的两列?

Asp.net 如何在ASP MVC中将所有动态添加的文本框保存到数据库中的两列?,asp.net,asp.net-mvc,asp.net-core,asp.net-mvc-4,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Mvc 4,Asp.net Mvc 3,你好!在动态添加的文本框脚本中保存输入时遇到问题,该脚本包含两个数据库列。Id、员工Id、类别和金额。我只想将动态文本框中输入的所有数据保存到数据库中 这是我在ASP MVC视图中的代码,脚本添加了动态文本框: @using PayrollWeb.Models @model PayrollWeb.Models.PayrollFormModel @{ ViewBag.Title = "AddOrEdit"; Layout = "~/Views/Shar

你好!在动态添加的文本框脚本中保存输入时遇到问题,该脚本包含两个数据库列。Id、员工Id、类别和金额。我只想将动态文本框中输入的所有数据保存到数据库中

这是我在ASP MVC视图中的代码,脚本添加了动态文本框:

@using PayrollWeb.Models
@model PayrollWeb.Models.PayrollFormModel
@{
    ViewBag.Title = "AddOrEdit";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (Html.BeginForm("AddOrEdit", "Payroll", FormMethod.Post, new { onsubmit = "return SubmitFormPayroll(this)" }))
{
    @Html.HiddenFor(model => model.Id)

    <h1 style="text-align: center;"><span class="fa fa-calculator"></span>&nbsp;Payroll</h1>
    <br />
<div class="panel-group col-md-12">
    <div class="panel panel-primary">
        <div class="panel-heading">
            Employee Details
        </div>
        <div class="panel-body">
            <div class="row">
                <div class="col-md-3">
                    <div class="form-group">
                        @Html.LabelFor(x => x.EmployeeId, new { @class = "form-label" })
                        @Html.DropDownListFor(x => x.EmployeeId, Model.Employees, "", new { @class = "form-control" })
                        @Html.ValidationMessageFor(x => x.EmployeeId, null, new { @class = "text-danger" })
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="form-group">
                        @Html.LabelFor(x => x.StartDate, new { @class = "form-label" })
                        @Html.TextBoxFor(x => x.StartDate, new { @class = "form-control", @id = "datepickerto", @type = "date" })
                        @Html.ValidationMessageFor(x => x.StartDate, null, new { @class = "text-danger" })
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="form-group">
                        @Html.LabelFor(x => x.EndDate, new { @class = "form-label" })
                        @Html.TextBoxFor(x => x.EndDate, new { @class = "form-control", @id = "datepickertodin", @type = "date" })
                        @Html.ValidationMessageFor(x => x.EndDate, null, new { @class = "text-danger" })
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="form-group">
                        @Html.LabelFor(x => x.PayDate, new { @class = "form-label" })
                        @Html.TextBoxFor(x => x.PayDate, new { @class = "form-control", @id = "datepickertodin", @type = "date" })
                        @Html.ValidationMessageFor(x => x.PayDate, null, new { @class = "text-danger" })
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-3">
                    <div class="form-group">
                        @Html.LabelFor(x => x.PayFrequency, new { @class = "form-label" })
                        @Html.TextBoxFor(x => x.PayFrequency, new { @class = "form-control", @Value = "BI-WEEKLY", @readonly = "readonly" })
                        @Html.ValidationMessageFor(x => x.PayFrequency, null, new { @class = "text-danger" })
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="form-group">
                        @Html.LabelFor(x => x.DaysWorked, new { @class = "form-label" })
                        @Html.TextBoxFor(x => x.DaysWorked, new { @class = "form-control" })
                        @Html.ValidationMessageFor(x => x.DaysWorked, null, new { @class = "text-danger" })
                    </div>
                </div>
                <div class="col-md-3">
                    <div class="form-group">
                        @Html.LabelFor(x => x.MonthlyRate, new { @class = "form-label" })
                        @Html.TextBoxFor(x => x.MonthlyRate , new { @class = "form-control", @id="monthlyrate"})
                        @Html.ValidationMessageFor(x => x.MonthlyRate, null, new { @class = "text-danger" })
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

        @*<div class="form-group">
                @Html.LabelFor(x => x.SalaryPerDay, new { @class = "form-label" })
                @Html.TextBoxFor(x => x.SalaryPerDay, new { @class = "form-control", @id = "salaryperday" })
            </div>

            <div class="form-group">
                @Html.LabelFor(x => x.WorkDays, new { @class = "form-label" })
                @Html.TextBoxFor(x => x.WorkDays, new { @class = "form-control", @id = "workdays" })
            </div>*@
    <div class="panel-group col-md-4">
        <div class="panel panel-primary">
            <div class="panel-heading">
                Income
            </div>
            <div class="panel-body">
                <div class="row">
                    <div class="col-md-6"></div>
                    <div class="col-md-6">
                        <div class="form-group">
                            @Html.LabelFor(x => x.BasicPayAmount, new { @class = "form-label" })
                            @Html.TextBoxFor(x => x.BasicPayAmount, new { @class = "form-control", @id = "basicpayamount" })
                            @Html.ValidationMessageFor(x => x.BasicPayAmount, null, new { @class = "text-danger" })
                        </div>
                    </div>
                </div>            
            </div>
        </div>
    </div>

<div class="panel-group col-md-4">
    <div class="panel panel-primary">
        <div class="panel-heading">
            Deductions
        </div>
        <div class="panel-body">
            <div class="form-group">
                @Html.LabelFor(x => x.WitholdingTax, new { @class = "form-label" })
                @Html.TextBoxFor(x => x.WitholdingTax, new { @class = "form-control" })
                @Html.ValidationMessageFor(x => x.WitholdingTax, null, new { @class = "text-danger" })
            </div>
            <div class="form-group">
                @Html.LabelFor(x => x.PagibigContribution, new { @class = "form-label" })
                @Html.TextBoxFor(x => x.PagibigContribution, new { @class = "form-control", @Value = "100.00", @readonly = "readonly" })
                @Html.ValidationMessageFor(x => x.PagibigContribution, null, new { @class = "text-danger" })
            </div>
            <div class="form-group">
                @Html.LabelFor(x => x.PhilhealthContribution, new { @class = "form-label" })
                @Html.TextBoxFor(x => x.PhilhealthContribution, new { @class = "form-control", @Value = "191.25", @readonly = "readonly" })
                @Html.ValidationMessageFor(x => x.PhilhealthContribution, null, new { @class = "text-danger" })
            </div>
            <div class="form-group">
                @Html.LabelFor(x => x.SSSContribution, new { @class = "form-label" })
                @Html.TextBoxFor(x => x.SSSContribution, new { @class = "form-control", @Value = "560.00", @readonly = "readonly" })
                @Html.ValidationMessageFor(x => x.SSSContribution, null, new { @class = "text-danger" })
            </div>

            <div class="row">
                <div class="col-md-6">
                    <div class="form-group">
                        @Html.LabelFor(x => x.Deduction, new { @class = "form-label" })
                        @Html.TextBoxFor(x => x.Deduction, new { @class = "form-control", @id = "deduction" })
                        @Html.ValidationMessageFor(x => x.Deduction, null, new { @class = "text-danger" })
                    </div>
                </div>
                <div class="col-md-6">
                    <input id="btnAdd" type="button" value="Add" onclick="AddTextBox()" class="btn btn-info" style="margin-top: 25px;" />
                </div>
            </div>
            <div id="TextBoxContainer" style="margin-top: 6%;   ">
                <!--Textboxes will be added here -->
            </div>
            <br />
            <div class="form-group">
                @Html.LabelFor(x => x.CashLoan, new { @class = "form-label" })
                @Html.TextBoxFor(x => x.CashLoan, new { @class = "form-control" })
                @Html.ValidationMessageFor(x => x.CashLoan, null, new { @class = "text-danger" })
            </div>
        </div>
    </div>
</div>

<div class="panel-group col-md-4">
    <div class="panel panel-primary">
        <div class="panel-heading">
            Summary
        </div>
        <div class="panel-body">
            <div class="form-group">
                @Html.LabelFor(x => x.TotalSalary, new { @class = "form-label" })
                @Html.TextBoxFor(x => x.TotalSalary, new { @class = "form-control", @id = "totalsalary" })
                @Html.ValidationMessageFor(x => x.TotalSalary, null, new { @class = "text-danger" })
            </div>
        </div>
    </div>
</div>

<div class="row">
    <div class="col-md-4"></div>
    <div class="col-md-4"></div>
    <div class="col-md-2"></div>
    <div class="col-md-2">
        <div class="form-group">
            <input type="submit" value="Submit" class="btn btn-primary" />
            <input type="reset" value="Reset" class="btn btn-primary" />
        </div>
    </div>
</div>

    <a href="@Url.Action("Index", "Payroll")"><span class="fa fa-backward"></span>&nbsp;&nbsp;Back to Dashboard</a>

    <script type="text/javascript">
        function GetDynamicTextBox(value) {
            var div = $("<div />").attr("class", "row").attr("style","margin-top: 6px;");

            var textBox = $("<input />").attr("type", "textbox").attr("name", "DynamicTextBox").attr("style", "width:30%;margin-left:5%;");
            textBox.val(value);
            div.append(textBox);


            var textBox = $("<input />").attr("type", "textbox").attr("name", "DynamicTextBox1").attr("style", "width:30%;margin-left:5%;");
            textBox.val(value);
            div.append(textBox);

            var button = $("<input />").attr("type", "button").attr("value", "Remove").attr("style", "width:20%;margin-left:5%;");
            button.attr("onclick", "RemoveTextBox(this)");
            div.append(button);

            return div;

        }
        function AddTextBox() {
            var div = GetDynamicTextBox("");
            $("#TextBoxContainer").append(div);
        }

        function RemoveTextBox(button) {
            $(button).parent().remove();
        }

        $(function () {
            var values = eval('@Html.Raw(ViewBag.Values)');
            if (values != null) {
                $("#TextBoxContainer").html("");
                $(values).each(function () {
                    $("#TextBoxContainer").append(GetDynamicTextBox(this));
                });
            }
        });
                //$(function () {
                //    $('#datepickerto').datepicker({ //datepicker startdate
                //        dateFormat: "yy/mm/dd",
                //        changeMonth: true,
                //        changeYear: true,
                //        showOn: "both",
                //        buttonText : "<i class='fa fa-calendar'></i>"
                //    });
                //});
                //$(function () {
                //    $('#datepickertodin').datepicker({ //datepicker enddate
                //        dateFormat: "yy/mm/dd",
                //        changeMonth: true,
                //        changeYear: true,
                //        showOn: "both",
                //        buttonText: "<i class='fa fa-calendar'></i>"
                //    });
                //});

                //$(function () { //calculate

                //    $("#salaryperday,#workdays,#deduction").keyup(function (e) {

                //        var salary = $("#salaryperday").val();
                //        var work = $("#workdays").val();
                //        var deduction = $("#deduction").val();
                //        var result = "";

                //        if (salary !== "" && work !== "" && deduction !== "" && $.isNumeric(salary) && $.isNumeric(work) && $.isNumeric(deduction)) {
                //            result = parseFloat(salary) * parseFloat(work) - parseFloat(deduction);
                //        }
                //        $("#totalsalary").val(result);

                //    });

                //});

                $(function () { //calculate

                    $("#monthlyrate").keyup(function (e) {

                        var monthlyrate = $("#monthlyrate").val();
                        var result = "";

                        if (monthlyrate !== "" && $.isNumeric(monthlyrate)) {
                            result = parseFloat(monthlyrate) / 2;
                        }
                        $("#basicpayamount").val(result);

                    });

                });
    </script>
}

提前谢谢。

您的意思是希望插入或更新工资单一次,并使用
字符串[]DynamicTextBox、字符串[]DynamicTextBox1
添加扣减额。如果是,您可以这样做: 控制器:

JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewBag.Values = serializer.Serialize(DynamicTextBox);
ViewBag.Values = serializer.Serialize(DynamicTextBox1);
using (var db = new PayrollwebContext())
{
    if (model.Id > 0)
    { // update
        var EmployeePayroll = db.Payrolls.FirstOrDefault(x => x.Id == model.Id);

        EmployeePayroll.Id = model.Id;
        EmployeePayroll.EmployeeId = model.EmployeeId;
        EmployeePayroll.StartDate = model.StartDate;
        EmployeePayroll.EndDate = model.EndDate;
        EmployeePayroll.PayFrequency = model.PayFrequency;
        EmployeePayroll.PayDate = model.PayDate;
        EmployeePayroll.DaysWorked = model.DaysWorked;
        EmployeePayroll.MonthlyRate = model.MonthlyRate;
        EmployeePayroll.WitholdingTax = model.WitholdingTax;
        EmployeePayroll.PagibigContribution = model.PagibigContribution;
        EmployeePayroll.PhilhealthContribution = model.PhilhealthContribution;
        EmployeePayroll.SSSContribution = model.SSSContribution;
        //EmployeePayroll.SalaryPerDay = model.SalaryPerDay;
        //EmployeePayroll.WorkDays = model.WorkDays;
        EmployeePayroll.Deduction = model.Deduction;
        EmployeePayroll.CashLoan = model.CashLoan;
        EmployeePayroll.TotalSalary = model.TotalSalary;

        db.Payrolls.AddOrUpdate(EmployeePayroll);
        db.SaveChanges();
        return Json(new { success = true, message = "Updated Successfully" }, JsonRequestBehavior.AllowGet);
    }
    else
    { //insertion
        var payrolls = new Payroll
        {
            EmployeeId = model.EmployeeId,
            StartDate = model.StartDate,
            EndDate = model.EndDate,
            PayFrequency = model.PayFrequency,
            PayDate = model.PayDate,
            DaysWorked = model.DaysWorked,
            MonthlyRate = model.MonthlyRate,
            BasicPayAmount = model.BasicPayAmount,
            WitholdingTax = model.WitholdingTax,
            PagibigContribution = model.PagibigContribution,
            PhilhealthContribution = model.PhilhealthContribution,
            SSSContribution = model.SSSContribution,
            //SalaryPerDay = model.SalaryPerDay,
            //WorkDays = model.WorkDays,
            Deduction = model.Deduction,
            CashLoan = model.CashLoan,
            TotalSalary = model.TotalSalary
        };
        db.Payrolls.Add(payrolls);
        List<Deductions> list = new List<Deductions>();
        for (int i = 0; i < DynamicTextBox.Length; i++)
        {
            var deduct = new Deductions
            {
                EmployeeId = payrolls.EmployeeId,
                Category = DynamicTextBox[i],
                Amount = Convert.ToInt32(DynamicTextBox1[i]),
            };
            list.Add(deduct);
        }
        db.Deductionss.AddRange(list);
        db.SaveChanges();
        //resetLoop = false;
        //return Json(new { success = true, message = "Saved Successfully" }, JsonRequestBehavior.AllowGet);
    }
    model = PreparePayrollFormModel(model);
    return View(model);
JavaScriptSerializer serializer=新的JavaScriptSerializer();
ViewBag.Values=serializer.Serialize(DynamicTextBox);
ViewBag.Values=serializer.Serialize(DynamicTextBox1);
使用(var db=new PayrollwebContext())
{
如果(model.Id>0)
{//更新
var EmployeePayroll=db.Payrolls.FirstOrDefault(x=>x.Id==model.Id);
EmployeePayroll.Id=model.Id;
EmployeePayroll.EmployeeId=model.EmployeeId;
EmployeePayroll.StartDate=model.StartDate;
EmployeePayroll.EndDate=model.EndDate;
EmployeePayroll.PayFrequency=model.PayFrequency;
EmployeePayroll.PayDate=model.PayDate;
EmployeePayroll.DaysWorked=model.DaysWorked;
EmployeePayroll.MonthlyRate=model.MonthlyRate;
EmployeePayroll.WitholdingTax=model.WitholdingTax;
EmployeePayroll.PagibigContribution=model.PagibigContribution;
EmployeePayroll.PhilhealthContribution=model.PhilhealthContribution;
EmployeePayroll.SSSContribution=model.SSSContribution;
//EmployeePayroll.SalaryPerDay=model.SalaryPerDay;
//EmployeePayroll.WorkDays=model.WorkDays;
EmployeePayroll.Desculation=模型.Desculation;
EmployeePayroll.CashLoan=model.CashLoan;
EmployeePayroll.TotalSalary=model.TotalSalary;
db.Payrolls.AddOrUpdate(员工工资单);
db.SaveChanges();
返回Json(新的{success=true,message=“Updated Successfully”},JsonRequestBehavior.AllowGet);
}
其他的
{//插入
var工资单=新工资单
{
EmployeeId=model.EmployeeId,
StartDate=model.StartDate,
EndDate=model.EndDate,
PayFrequency=model.PayFrequency,
PayDate=model.PayDate,
DaysWorked=model.DaysWorked,
MonthlyRate=model.MonthlyRate,
BasicPayMount=model.BasicPayMount,
WitholdingTax=model.WitholdingTax,
PagibigContribution=model.PagibigContribution,
PhilhealthContribution=model.PhilhealthContribution,
SSS分配=型号。SSS分配,
//SalaryPerDay=model.SalaryPerDay,
//工作日=型号。工作日,
扣减=模型扣减,
CashLoan=model.CashLoan,
TotalSalary=model.TotalSalary
};
db.工资单。添加(工资单);
列表=新列表();
for(int i=0;i
JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewBag.Values = serializer.Serialize(DynamicTextBox);
ViewBag.Values = serializer.Serialize(DynamicTextBox1);
using (var db = new PayrollwebContext())
{
    if (model.Id > 0)
    { // update
        var EmployeePayroll = db.Payrolls.FirstOrDefault(x => x.Id == model.Id);

        EmployeePayroll.Id = model.Id;
        EmployeePayroll.EmployeeId = model.EmployeeId;
        EmployeePayroll.StartDate = model.StartDate;
        EmployeePayroll.EndDate = model.EndDate;
        EmployeePayroll.PayFrequency = model.PayFrequency;
        EmployeePayroll.PayDate = model.PayDate;
        EmployeePayroll.DaysWorked = model.DaysWorked;
        EmployeePayroll.MonthlyRate = model.MonthlyRate;
        EmployeePayroll.WitholdingTax = model.WitholdingTax;
        EmployeePayroll.PagibigContribution = model.PagibigContribution;
        EmployeePayroll.PhilhealthContribution = model.PhilhealthContribution;
        EmployeePayroll.SSSContribution = model.SSSContribution;
        //EmployeePayroll.SalaryPerDay = model.SalaryPerDay;
        //EmployeePayroll.WorkDays = model.WorkDays;
        EmployeePayroll.Deduction = model.Deduction;
        EmployeePayroll.CashLoan = model.CashLoan;
        EmployeePayroll.TotalSalary = model.TotalSalary;

        db.Payrolls.AddOrUpdate(EmployeePayroll);
        db.SaveChanges();
        return Json(new { success = true, message = "Updated Successfully" }, JsonRequestBehavior.AllowGet);
    }
    else
    { //insertion
        var payrolls = new Payroll
        {
            EmployeeId = model.EmployeeId,
            StartDate = model.StartDate,
            EndDate = model.EndDate,
            PayFrequency = model.PayFrequency,
            PayDate = model.PayDate,
            DaysWorked = model.DaysWorked,
            MonthlyRate = model.MonthlyRate,
            BasicPayAmount = model.BasicPayAmount,
            WitholdingTax = model.WitholdingTax,
            PagibigContribution = model.PagibigContribution,
            PhilhealthContribution = model.PhilhealthContribution,
            SSSContribution = model.SSSContribution,
            //SalaryPerDay = model.SalaryPerDay,
            //WorkDays = model.WorkDays,
            Deduction = model.Deduction,
            CashLoan = model.CashLoan,
            TotalSalary = model.TotalSalary
        };
        db.Payrolls.Add(payrolls);
        List<Deductions> list = new List<Deductions>();
        for (int i = 0; i < DynamicTextBox.Length; i++)
        {
            var deduct = new Deductions
            {
                EmployeeId = payrolls.EmployeeId,
                Category = DynamicTextBox[i],
                Amount = Convert.ToInt32(DynamicTextBox1[i]),
            };
            list.Add(deduct);
        }
        db.Deductionss.AddRange(list);
        db.SaveChanges();
        //resetLoop = false;
        //return Json(new { success = true, message = "Saved Successfully" }, JsonRequestBehavior.AllowGet);
    }
    model = PreparePayrollFormModel(model);
    return View(model);