2017-09-15 19 views
0

对于我无法让我的整数数组值正确贴到我的MVC控制器某种原因。我已经看了关于这个话题 很多职位,但到目前为止我还没有能够得到这个工作。jQuery的POST不是写整数数组到MVC控制器参数

我的来电显示是这样的:

$scope.openRollUpReport = function (inItem) { 

     var IssueIDs = []; 
     IssueIDs.push(1); 
     IssueIDs.push(4); 

     var request = $.ajax({ 
      traditional: true, 
      url: url, 
      type: "POST", 
      data: JSON.stringify(IssueIDs), 
      datatype: 'json' 
     }); 
    }; 

我控制器的方法是这样的:

[System.Web.Http.Route("Api/Report/RollUpReport/")] 
[System.Web.Mvc.HttpPost] 
public void RollUpReport(int[] IssueIDs) 
{ 

} 

我成功地调用控制器方法。但是,IssueID如下所示:{int [0]}

另外,我注意到在IE Developer工具中,Request Body看起来像这样: [1,4]。我相信这是我失踪的基本原理。任何帮助表示赞赏。

感谢,

皮特

感谢凯文,我尝试这样做:

var IssueIDs = []; 
     IssueIDs.push(1); 
     IssueIDs.push(4); 

     var jsonData = { IssueIDs: IssueIDs }; 

     var request = $.ajax({ 
      traditional: true, 
      url: url, 
      type: "POST", 
      data: JSON.stringify(jsonData), 
      datatype: 'json' 
     }); 

但我仍然得到这个服务器的方法:{INT [0]}

我决定改变这只是简单的发布一个逗号分隔的字符串,然后解析服务器端。这是我结束了:

$scope.openRollUpReport = function (inItem) { 

     var IssueIDs = '1,5,9,12'; 

     var request = $.ajax({ 
      traditional: true, 
      url: url, 
      type: "POST", 
      data: '=' + IssueIDs 
     }); 
    }; 

服务器端:

[System.Web.Http.HttpPost] 
public HttpResponseMessage RollUpReport([FromBody] string IssueIDs) 
{ 
    HttpResponseMessage result; 
    result = new HttpResponseMessage(HttpStatusCode.OK); 
    return result; 
} 
+0

感谢凯文,我想如你所说,但我仍然得到同样的结果。 – Pete

回答

0

我决定改变这只是简单的发布一个逗号分隔的字符串,然后解析服务器端。这是我结束了:

$scope.openRollUpReport = function (inItem) { 

     var IssueIDs = '1,5,9,12'; 

     var request = $.ajax({ 
      traditional: true, 
      url: url, 
      type: "POST", 
      data: '=' + IssueIDs 
     }); 
    }; 

服务器端:

[System.Web.Http.HttpPost] 
public HttpResponseMessage RollUpReport([FromBody] string IssueIDs) 
{ 
    HttpResponseMessage result; 
    result = new HttpResponseMessage(HttpStatusCode.OK); 
    return result; 
} 
0

你的JSON需要命名IssueIds参数,而不仅仅是直接字符串化的阵列。

var jsonData = { IssueIds: IssueIds }; 
$.ajax({ ... data: JSON.stringify(jsonData)}); 

此外,它已经有一段时间了,但我不记得您是否需要接受JSON的属性。

相关问题