首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mvc中从动态添加的textbox中保存多个数据库数据

如何在mvc中从动态添加的textbox中保存多个数据库数据
EN

Stack Overflow用户
提问于 2016-12-07 16:53:43
回答 2查看 1.1K关注 0票数 0

如何通过javascript从动态添加的textbox中保存多个数据?我已经做了产品列表和付款条款的动态添加的文本框。我应该为控制器和视图做些什么

我测试了This,但没有正常工作

这是我的控制器

代码语言:javascript
复制
 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
    }

}

这是我的invoiceWrapper

代码语言:javascript
复制
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; }
    }
}

这是我的javascript You can test it on Jsfiddle

我的观点是

代码语言:javascript
复制
@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>
  }
EN

回答 2

Stack Overflow用户

发布于 2016-12-07 19:33:17

你应该建模表单控件(m => m.PurchaseInvoiceID,@Html.TextBoxFor{=>“PurchaseInvoiceID”,@m.PurchaseInvoiceID=“id=-PurchaseInvoiceID”})

@Html.TextBoxFor(m => m.InvoiceID,@Html.TextBoxFor{=>“InvoiceID”,@class =“表单控件”})

然后通过ajax或post json传递这个变量。

票数 0
EN

Stack Overflow用户

发布于 2016-12-07 16:58:46

你应该使用一个javascript ajax (POST call),一个包含所有动态添加字段的json (可能是一个item值对象的列表),而在服务器端,你需要一个能处理这个列表的action方法,你不能直接从MVC做这件事。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41013037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档