将模型发布到控制器

时间:2014-10-14 17:03:00

标签: javascript jquery json asp.net-mvc-4

我问了一个问题,将客户端的模型数据填入数组。

Add items to JSON objects

现在我的问题是如何将其发布到控制器。我试过这个:

 public ActionResult ItemRequest (Model1 model)
 {
    ////
 }

但它永远不会到达那里。

我正在尝试使用AJAX请求发送它:

 function sendRequest() {
    jsonData.items = itemArray;
    $.ajax({
       url: '@Url.Action("ItemRequest")',
       type: 'POST',
       data: JSON.stringify(jsonData),
       ///// and so on
  }

但是从不调用动作结果。我可以删除'JSON.stringify',它没有任何区别。关于如何将此对象发布到控制器的任何想法?

如果我在JS中制作一个伪造的模型它工作正常,但我不想制作这个模型,我宁愿使用传递给页面的模型。

  function itemModel () {
     var self = this;
     this.itemNumber = $("#itemNumberId").val();
     /// etc.
     self.items = [];
  }

  function itemsModel () {
    var self = this;
    this.itemNumber = $("#itemNumberId").val();
     /// etc
  }

然后

  var itemCount = 0;     
  function addItem() {
    var newItem = new itemModel();
    newItem.items[itemCount] = newItem;
    /// etc
  }

这很好用。

我以与JSON.stringify相同的方式将数组itemModel直接发送到控制器方法

 public ActionResult ItemRequest(ItemModel model)

1 个答案:

答案 0 :(得分:0)

我们正在使用它将数据发送到内部测试方面的API控制器方法: 它可能不是最漂亮的解决方案,但它可以在任何页面上使用。

应该发送什么数据:

$("#btnSend").click(function () {call("controller/method", {ParamName: $("#field").val()}); });

将数据发送到控制器:

$(document).ready(function () {
    var call = function (method, requestData, resultHandler) {
        var url = method.substring(0, 1) == "/api/" + method;

        $.ajax({
            url: url,
            dataType: 'json',
            data: JSON.stringify(requestData),
            type: 'POST',
            contentType: 'application/json',
            success: function (data) {
                var isSuccess = data.Status == "success";
                $("#jsonResponse").val(FormatJSON(data));

                if (isSuccess && jQuery.isFunction(resultHandler)) {
                    resultHandler(data);
                }
            }
        });
    };