【问题标题】:Posting a model to the controller将模型发布到控制器
【发布时间】:2014-10-14 17:02:59
【问题描述】:

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

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
  }

这很好用。

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

 public ActionResult ItemRequest(ItemModel model)

【问题讨论】:

  • 对于初学者,您尝试将 Array 对象传递到服务器上的单个对象中。此外,您将itemArray 分配给jsonData.items,但正在字符串化并传递jsonData
  • @CSharper - 好的,我明白了,那么我应该通过什么以及如何通过?

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


【解决方案1】:

我们正在使用它来将数据发送到我们内部测试端的 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);
                }
            }
        });
    };

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多