【问题标题】:Passing .NET objects to method with AJAX使用 AJAX 将 .NET 对象传递给方法
【发布时间】:2018-07-26 18:42:49
【问题描述】:

我在我的 C# 代码中调用一个方法,该方法接受 2 个 ListBox 对象和一个 GridView 作为参数。我如何传递这些,我尝试过的会抛出一个错误,说参数丢失。

var visList = document.getElementById("<%= shown_ListBox.ClientID%>");
var hidList = document.getElementById("<%= hidden_ListBox.ClientID%>");
var gv = document.getElementById("<%= hm_GridView.ClientID%>")
$.ajax({
                    type: "POST",
                    url: "heatmap.aspx/manageCol",
                    data: JSON.stringify({visList, hidList, gv}),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (res) {
                        alert("success");
                    },
                    error: function (res, msg, code) {
                        // log the error to the console
                    } //error
                });

 public static void manageCol(ListBox visList, ListBox hidList, GridView gv)
    {
     //Stuff
    }

【问题讨论】:

  • 确保名称与控制器参数匹配:stringify({shown, hidden, gv}。此外,发布列表和网格视图也很奇怪,因为它们会有很多 html;通常你会发布在这些控件中被操纵的数据。例如,您可能有一个用于处理学生记录的网格视图,并且您将只发布那些已更改的学生记录。
  • 我已经匹配了名称并且不再抛出错误但是所有对象一旦被传递就没有数据。我敢肯定,这对我来说是新事物。如果这会使事情变得更容易,我可以发布列表数据,但 gridview 绑定到 sql 数据源,所以我需要保留它。
  • 我有一种感觉可能会发生:我从未见过任何人,包括我自己,将控件发布到服务器。我建议你研究如何使用 gridviews 并掌握它。您也可以将这些知识应用于其他控件。
  • 发布 gridview 并不重要,我可以解决这个问题。如何将列表框数据传递给方法?
  • 阅读 MVC 中的 M。您将模型传递给控制器​​。换句话说,您将从列表框中获取数据,从中创建一个对象,与 gridview 相同,然后将整个对象传递给控制器​​。

标签: javascript c# asp.net-ajax


【解决方案1】:

1) JSON.stringify({visList, hidList, gv} 正在向您的 webmethod manageCol 发送一个对象,而它需要 3 个参数。

2) 您正在传递一个字符串对象,同时期望 ListBox、ListBox 和 GridView 项。

【讨论】:

猜你喜欢
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
相关资源
最近更新 更多