将JSon结果传递给Controller方法

时间:2016-08-24 08:30:19

标签: javascript asp.net json

美好的一天!我是asp.net mvc的新手,需要将JSonResult数据传递给控制器​​中的方法。在我的查看中,我有这张表:

IAbstract

此表的值来自另一个表。但是一列,即Quantity,其值为0,因为它将在表格中输入。

因此,我将 QUANTITY_ORDERED 列设为可编辑。然后它会通过这个传递值:

   <table id="tbl_orderItems" class="table table-striped table-bordered table-hover dt-responsive nowrap" cellspacing="0">
            <thead>
                <tr>

                    <th>Item Code</th>
                    <th>Quantity</th>

                    <th>Unit</th>
                    <th>Item Description</th>
                    <th>Status</th>
                    <th>Action</th>
                </tr>
            </thead>

            @if (TempData["listOrder"] != null)
            {
                foreach (var items in TempData["listOrder"] as List<ebms.ViewModels.OrderItems>)
                {  @Html.HiddenFor(modelItem => items.Id, new { @id = "productId" })
                <tr>

                    <td id="productCode">@items.PRODUCT_CODE</td>
                    <td contenteditable="true" id="quantity">@items.QUANTITY_ORDERED
                        <input id="save" type="button" value="Save"  />
                    </td>
                    <td id="unit">@items.MEASUREMENT_NAME</td>
                    <td id="itemDesc">@items.ITEM_DESCRIPTION</td>
                    <td id="status">@items.tmpStatus</td>
                    <td>
                        @Html.ActionLink("Remove", "Remove", new { id = items.Id },
                                        new { onclick = "return confirm('Are sure want to remove?');" })
                    </td>
                </tr>

                }

            }

        </table>

在我的Controller中,我有这个JSonResult方法保存,它应该从视图中接受QUANTITY_ORDERED的值。

<script>

    $(document).ready(function () {
        $("#save").prop("disabled", true);

        $("div").on('input', function () {
            $("#save").prop("disabled", false);
        });

        $("#save").click(function () {
            var modifiedQuanity = {};

            modifiedQuanity.Id = $("#productId").text();
            modifiedQuanity.QUANTITY_ORDERED = $("#quantity").text();


            $.post("/Sales/Save", modifiedQuanity, function (msg) {
                $("#save").prop("disabled", true);
                $("#msg").html("<strong>" + msg + "</strong>");
            });

        });
    });

</script>

然后我需要将JsonResult数据传递给Controller Method以进行最后的保存。

但我的问题是,它似乎没有将值传递给保存方法。我无法弄清楚如何将JsonResult数据传递给Controller方法。有人可以帮我解决这个问题吗?我错过了什么?

1 个答案:

答案 0 :(得分:0)

你应该替换

$.post("/Sales/Save" 

$.post('@Url.Action("Save", "Sales")'

这将让MVC确保指向控制器操作的链接是正确的。

其次,您是说要将数据传递给另一个名为&#34; AddOrder&#34;的方法。而不是直接将其保存在&#34; Save&#34;方法

我不知道你的方法签名是什么,所以我假设它是一个名为&#34; MyOtherClass&#34;的类中的静态方法。并接受ORDER_DETAILS实例作为参数,如下所示:

public static void AddOrder(ORDER_DETAILS detsails)
{
   //... code here
}

在这种情况下,你的&#34; Save&#34;方法很简单,就像这样:

public JsonResult Save(ORDER_DETAILS obj)
{
   MyOtherClass.AddOrder(obj);
   return Json("Order saved successfully!");
}

因此,如果确切的方法细节不同,您需要根据您的具体情况进行调整。