使用javascript将表数据从视图传递到控制器

时间:2016-06-30 06:37:07

标签: javascript ajax asp.net-mvc-4

我正在尝试使用java脚本将我的表数据从视图传递到控制器,但它无法正常工作。我使用java-script将表数据传递给我的模型类。

我的模型类包含我的共享类的对象数组,我正在填充我的数据。

我的共享课程是这样的:

 public class BomItemsDTO : IBomItems
{
   public int stockitemid { get; set; }
   public string itemname { get; set; }
   public int quantity { get; set; }
   public string description { get; set; }
   public string approvedsupplier { get; set; }
   public int priceperunit { get; set; }
   public int totalprice { get; set; }
}

我的模型类是这样的:

public class BiddingSecondStepModel
{
    public BomItemsDTO[] BomItems { get; set; }

}

我的javascript代码是这样的:

<script type="text/javascript">
    $("#btnsendtoadvancepurchase").on('click', function () {
        var BomItems = [];
        $('#tblBom tr').each(function (row, tr) {
                BomItems.push({
                    itemcode: $(tr).find('td:eq(0)').text().trim(),
                    desc: $(tr).find('td:eq(1)').text(),
                    quant: $(tr).find('td:eq(2)').text(),
                    supplier: $(tr).find('td:eq(3)').text(),
                });
        });
            var model = {
                BomItems: BomItems
            };


            debugger;
            $.ajax({
                url:'@Url.Action("AdvancePurchase", "CreateBid")',
                type: "POST",
                contentType: 'application/json; charset=utf-8',
                data: MODEL,
                dataType:'json',
                success: function (data) {
                    alert('Document Saved.');
                }
            });
        });

</script>

我的html表是动态制作的:

<table class="TableID2" id="tblBom">
                                    <thead>
                                        <tr>
                                            <th>Item Code</th>
                                            <th>Description</th>
                                            <th>Quantity</th>
                                            <th>Approved Supplied</th>
                                            <th></th>
                                        </tr>
                                    <tr><td>
                TD6915PLBOXSTRG00
            </td><td>456 n6</td><td>789456</td><td>aa</td><td><img src="../Content/Images/deleterow.png" class="btnDelete"></td></tr><tr><td>
                SG0242108JAD1HG10
            </td><td>125 v4</td><td>456123</td><td>aa</td><td><img src="../Content/Images/deleterow.png" class="btnDelete"></td></tr></thead>

                                </table>

我的控制器动作如下:

 [HttpPost]
    public ActionResult AdvancePurchase(BiddingSecondStepModel data)
    {

    }

当控制器操作收到数据时,我没有为我的数据编写代码。 我主要担心的是如何将我的表的数据从视图发送到我的控制器操作。

请帮忙。 提前致谢

1 个答案:

答案 0 :(得分:0)

也许你在js的模型没有创造出来! 您可以使用序列化表单获取模型,而不是获取每个字段。为此,首先为表单定义id,然后在脚本中通过id获取整个表单,然后您可以序列化表单中所有模型字段,如:

var model=$("#Myform").serialize();

现在您可以在网址后绑定模型并将其发送到控制器,如:

$.ajax({
         url:'@Url.Action("AdvancePurchase","CreateBid")?'+model,
         type: "POST",
         success: function (data) {
         alert('Document Saved.');
                }
                });

它会起作用。