2017-09-15 8 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) 
{ 

} 

私は成功したコントローラメソッドを呼んでいます。しかし、IssueIDsは次のようになります。{int [0]}

また、IEデベロッパーツールでは、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]}

これを単にカンマで区切った文字列をPOSTし、サーバー側を解析するだけに変更しました。

$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

これを単にカンマ区切りの文字列をPOSTにしてからサーバー側を解析するように変更することにしました。これは私がなってしまったものです:

$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を受け入れるための属性を必要とする場合、私は覚えていないことができます。

関連する問題