Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MVC和Javascript验证并将动态添加的字段保存到数据库_Javascript_C#_Jquery_Asp.net Mvc_Formvalidation.io - Fatal编程技术网

使用MVC和Javascript验证并将动态添加的字段保存到数据库

使用MVC和Javascript验证并将动态添加的字段保存到数据库,javascript,c#,jquery,asp.net-mvc,formvalidation.io,Javascript,C#,Jquery,Asp.net Mvc,Formvalidation.io,我正在尝试验证动态添加的字段并保存到DB。Formvalidation正在工作,但当我将表单提交给控制器模型时。计数没有更改。(model.Count=1) 我相信问题很简单,但出于某种原因我看不出问题所在。 我在等你的帮助 您还可以看到工作示例和调试屏幕截图 编辑 模型 看法 我认为这是不正确的: $clone .find('[name="BudgetId"]').attr('name', '[' + actualIndex + '].BudgetId

我正在尝试验证动态添加的字段并保存到DB。Formvalidation正在工作,但当我将表单提交给控制器模型时。计数没有更改。(model.Count=1)

我相信问题很简单,但出于某种原因我看不出问题所在。 我在等你的帮助

您还可以看到工作示例和调试屏幕截图

编辑

模型

看法


我认为这是不正确的:

$clone
                    .find('[name="BudgetId"]').attr('name', '[' + actualIndex + '].BudgetId').end()
                    .find('[name="InvoiceId"]').attr('name', '[' + actualIndex + '].InvoiceId').end()
                    .find('[name="ActualAmount"]').attr('name', '[' + actualIndex + '].ActualAmount').end()
                    .find('[name="Percentage"]').attr('name', '[' + actualIndex + '].Percentage').end()
                    .find('[name="ExtraBudgetary"]').attr('name', '[' + actualIndex + '].ExtraBudgetary').end()
                    .find('[name="ExtraBudgetaryNo"]').attr('name', '[' + actualIndex + '].ExtraBudgetaryNo').end()
                    .find('[name="CurrencyRate"]').attr('name', '[' + actualIndex + '].CurrencyRate').end()
                    .find('[name="Description"]').attr('name', '[' + actualIndex + '].Description').end();

我不确定绑定元素的正确“命名”,尽管我以前在这方面遇到过麻烦。我的方法是增加我的原始列表,循环浏览,然后完全按照原样复制绑定方式。

我认为这是不正确的:

$clone
                    .find('[name="BudgetId"]').attr('name', '[' + actualIndex + '].BudgetId').end()
                    .find('[name="InvoiceId"]').attr('name', '[' + actualIndex + '].InvoiceId').end()
                    .find('[name="ActualAmount"]').attr('name', '[' + actualIndex + '].ActualAmount').end()
                    .find('[name="Percentage"]').attr('name', '[' + actualIndex + '].Percentage').end()
                    .find('[name="ExtraBudgetary"]').attr('name', '[' + actualIndex + '].ExtraBudgetary').end()
                    .find('[name="ExtraBudgetaryNo"]').attr('name', '[' + actualIndex + '].ExtraBudgetaryNo').end()
                    .find('[name="CurrencyRate"]').attr('name', '[' + actualIndex + '].CurrencyRate').end()
                    .find('[name="Description"]').attr('name', '[' + actualIndex + '].Description').end();

我不确定绑定元素的正确“命名”,尽管我以前在这方面遇到过麻烦。我的方法是增加我的原始列表,循环遍历它,然后完全按照原样复制绑定的方式。

您似乎要将项目添加到存储库中,好的,但是您将对上下文的更改保存在哪里?例如,如果您使用的是DbContext,那么您将使用DbContext.Save();我正在使用实现相关接口的具体类。这是我在ActualRepository.cs BudgetContext context=new BudgetContext()中的保存方法;public void Create(实际a){context.Actuals.Add(a);context.SaveChanges();}您似乎正在将项目添加到存储库中,好的,但是您将对上下文的更改保存在哪里?例如,如果您使用的是DbContext,那么您将使用DbContext.Save();我正在使用实现相关接口的具体类。这是我在ActualRepository.cs BudgetContext context=new BudgetContext()中的保存方法;public void Create(实际a){context.Actuals.Add(a);context.SaveChanges();}当我像下面的命名克隆一样更新命名时工作正常,但是当我提交表单时,表单计数仍然没有增加
.find('[name=“['+actualIndex+'].BudgetId“]').attr('name','['+actualIndex+'].BudgetId').end()
当我更新命名时,如下命名克隆工作正常,但当我提交表单时,表单计数仍然没有增加
.find('[name=“['+actualIndex+'].BudgetId']).attr('name','['+actualIndex+'].BudgetId').end()
        if (ModelState.IsValid)
        {
            var status = statusRepository.FindByName("In Process of Actualization");
            var user = userRepository.FindByName(SessionPersister.Username);
            foreach (var i in acVM)
            {
                var invoice = invoiceRepository.FindById(i.InvoiceId);
                Actual actual = new Actual
                {
                    BudgetId = i.BudgetId,
                    InvoiceId = i.InvoiceId,
                    ActualAmount = i.ActualAmount,
                    ExtraBudgetary = i.ExtraBudgetary,
                    ExtraBudgetaryNo = i.ExtraBudgetaryNo,
                    TransactionDate = DateTime.Now,
                    Currency = "USD",
                    CurrencyRate = i.CurrencyRate,
                    Description = i.Description,
                    //DistributionTemp = i.DistributionTemp,
                    Percentage = i.Percentage
                };
                actualRepository.Create(actual);

                if (actual != null)
                {
                    if (i.DistributionTemp == true)
                    {
                        DistributionTemplate distributionTemp = new DistributionTemplate
                        {
                            DistributionName = i.DistributionName,
                            Percentage = i.Percentage,
                            ProcessedBy = user.UserId,
                            Explanation = i.Description,
                            Validity = i.Validity,
                            ActualAmount = actual.ActualAmount,
                            TransactionDate = DateTime.Now
                        };
                        distributionTempRepository.Create(distributionTemp);
                        if (distributionTemp != null)
                        {
                            actual.DistributionId = distributionTemp.DistributionId;
                            actualRepository.Update(actual);
                        }
                    }

                    Process process = new Process
                    {
                        InvoiceId = i.InvoiceId,
                        StatusId = status.StatusId,
                        ProcessedBy = user.UserId,
                        ProcessDate = DateTime.Now,
                        //Confirmatory = relatedUnitManager.UnitId
                    };
                    processRepository.Create(process); // Yapılan işlemin kaydedilmesi

                    ViewBag.BudgetId = new SelectList(budgetRepository.SelectBudgets(), "BudgetId", "BudgetId", i.BudgetId);
                    ViewBag.DistributionId = new SelectList(distributionTempRepository.SelectDistributions(), "DistributionId", "DistributionName", i.DistributionId);
                    ViewBag.InvoiceId = new SelectList(invoiceRepository.SelectInvoices(), "InvoiceId", "InvoiceNo", i.InvoiceId);

                    if (process != null)
                    {
                        invoice.LastProcessId = process.ProcessId;
                        invoiceRepository.Update(invoice); // Yapılan son işleme dair id bilgisinin fatura tablosuna eklenmesi
                    }
                }
                else
                {
                    TempData["MessageFail"] += "Something went wrong!";
                    return RedirectToAction("Details/" + invoice.InvoiceId, "Invoices");
                }
                acVM = new List<ActualizationVM> { new ActualizationVM { ExtraBudgetary = false, ExtraBudgetaryNo = "", BudgetId = 0, InvoiceId = 0, Description = "", ActualAmount = 0, Percentage = 0, CurrencyRate = 0} };
                TempData["MessageSuccess"] += "Invoice is successfully actualized.";
                return RedirectToAction("Details/" + invoice.InvoiceId, "Invoices");
            }
        }
        return View(acVM);
$clone
                    .find('[name="[' + actualIndex + '].BudgetId"]').attr('name', '[' + actualIndex + '].BudgetId').end()
                    .find('[name="[' + actualIndex + '].InvoiceId"]').attr('name', '[' + actualIndex + '].InvoiceId').end()
                    .find('[name="[' + actualIndex + '].ActualAmount"]').attr('name', '[' + actualIndex + '].ActualAmount').end()
                    .find('[name="[' + actualIndex + '].Percentage"]').attr('name', '[' + actualIndex + '].Percentage').end()
                    .find('[name="[' + actualIndex + '].ExtraBudgetary"]').attr('name', '[' + actualIndex + '].ExtraBudgetary').end()
                    .find('[name="[' + actualIndex + '].ExtraBudgetaryNo"]').attr('name', '[' + actualIndex + '].ExtraBudgetaryNo').end()
                    .find('[name="[' + actualIndex + '].CurrencyRate"]').attr('name', '[' + actualIndex + '].CurrencyRate').end()
                    .find('[name="[' + actualIndex + '].Description"]').attr('name', '[' + actualIndex + '].Description').end();
$clone
                    .find('[name="BudgetId"]').attr('name', '[' + actualIndex + '].BudgetId').end()
                    .find('[name="InvoiceId"]').attr('name', '[' + actualIndex + '].InvoiceId').end()
                    .find('[name="ActualAmount"]').attr('name', '[' + actualIndex + '].ActualAmount').end()
                    .find('[name="Percentage"]').attr('name', '[' + actualIndex + '].Percentage').end()
                    .find('[name="ExtraBudgetary"]').attr('name', '[' + actualIndex + '].ExtraBudgetary').end()
                    .find('[name="ExtraBudgetaryNo"]').attr('name', '[' + actualIndex + '].ExtraBudgetaryNo').end()
                    .find('[name="CurrencyRate"]').attr('name', '[' + actualIndex + '].CurrencyRate').end()
                    .find('[name="Description"]').attr('name', '[' + actualIndex + '].Description').end();