JavaScriptで文字列配列を作成し、アクションメソッドの文字列リストで結果を取得しようとしています。以下は私のJavaScriptの外観です。 jQuery 1.4.2を使用しています。問題は、アクションメソッドのリストが常にNULLを表示していることです。 JavaScriptの文字列配列は、C#の文字列リストに正しくマッピングされませんか?
var test = ['test1', 'test2'];
var parms = {
var1: 'some string',
var2: test
};
$.ajax({
type: "POST",
url: "/Test/JSONTestAction",
async: false,
data: parms,
dataType: "json",
success: function(data) {
// success
}
});
その後、私のJsonResultは次のようになります。
public JsonResult JSONTestAction(string var1, List<string> var2)
{
// var2 is always NULL -- not good
return Json(new { test = "test" });
}
Jquery 1.4.2に更新した後、同じ問題に直面しました。あなたは解決策を見つけることができます こちら (Ajaxセクションで)。
Ajaxオプションに従来の:trueを追加すると動作するはずです。
$.ajax({
type: "POST",
traditional: true,
url: "/Test/JSONTestAction",
async: false,
data: parms,
dataType: "json",
success: function(data) {
// success
}
});
この変更は、PHP/Railsユーザーのネイティブな動作を改善するためでした paramsの変更については、こちらをご覧ください 。
次のようにリクエストごとに有効にできます:
$.ajax({
//Stuff...
traditional:true
});
または、このようにグローバルに(リクエストを実行する前に一度だけ実行する必要があります):
jQuery.ajaxSettings.traditional = true;