私は次のWORKINGコードを持っています:
クラス (宣言されたオブジェクト)
public class saveRow
{
public int proId { get; set; }
public string proName{get;set;}
}
コントローラ:
[HttpPost]
public virtual JsonResult SaveRow(saveRow input)
{ /* CODE HERE */}
JavaScript オブジェクト (送信済み)
var test = {"proId" : 1, "proName" : "Test"}
JavaScript Ajax 呼び出し
$.ajax({
type: "POST",
url: "URL",
dataType: "json",
data: test,
traditional: true,
success: function (data, status, request) {
if (data.Error != undefined) {
alert("System Error: " + data.Error);
$(row).find('*').attr('disabled', false);
return;
}
},
error: function (request, status, error) {
console.log("ERROR");
}
});
一度に1行ではなく行のリストを送信したいときに問題が発生するので、次のようにしました。
テストするために、同じオブジェクトを取得して完了しました
var test2 = []; test2.push(test); test2.push(test);
オブジェクトは次のようになります。
[{"proId" : 1, "proName" : "Test"},{"proId" : 1, "proName" : "Test"}]
私のコントローラーは次のようになります:
[HttpPost]
public virtual JsonResult SaveRow(List<saveRow> input)
{ /* CODE HERE */}
またIEnumberable
、オブジェクトのリストを JSON として送信すると、変数の入力が常に null になります。
しかし、コントローラーパラメーター「入力」を介してこのリストを送信するたびに、常にnullになります。
どうしてこれなの?
解決済み-
public virtual JsonResult SaveRow(saveRow[] input)
そして追加されたコンテンツタイプ!JSON.stringify で!