複雑なJSONオブジェクトをMVC 4コントローラアクションに渡そうとしています。 JSONコンテンツは可変であるため、MVCがJSONの個々のプロパティ/要素をアクションメソッドのパラメータリストのパラメータにマッピングすることは望ましくありません。私はちょうどコントローラのアクションで単一のJSON文字列パラメータとしてデータを取得したい。ここでJSONデータをjQuery経由でASP.NETにポストする.NET MVC 4コントローラアクション
は私のアクションメソッドのシグネチャです:
[HttpPost]
[ValidateInput(false)]
public string ConvertLogInfoToXml(string jsonOfLog)
そして、ここでは私のブラウザから、いくつかのJSONデータを投稿する私の試みです:
data = {prop: 1, myArray: [1, "two", 3]};
//'data' is much more complicated in my real application
json = {jsonOfLog: data};
$.ajax({
type: 'POST',
url: "Home/ConvertLogInfoToXml",
data: JSON.stringify(json),
success: function (returnPayload) {
console && console.log ("request succeeded");
},
error: function (xhr, ajaxOptions, thrownError) {
console && console.log ("request failed");
},
dataType: "xml",
contentType: "application/json",
processData: false,
async: false
});
私は最初に私のブレークポイントにヒットするとConvertLogInfoToXMLメソッド、jsonOfLogがnullです。
jsonOfLogプロパティを単純な文字列にするために、JavaScriptで 'json'変数がどのように設定されているかを変更します。 :ConvertLogInfoToXMLメソッドの冒頭に私のブレークポイントにヒットしたときに
json = { jsonOfLog: "simple string" };
はその後、jsonOfLogは、文字列(例えば「単純な文字列」)の値です。
I型のオブジェクトであることがアクションメソッドにjsonOfLogパラメータの種類を変更しようとした:今
[HttpPost]
[ValidateInput(false)]
public string ConvertLogInfoToXml(object jsonOfLog)
、私はより複雑な「データ」オブジェクトを渡していオリジナルJavaScriptコード(と)、jsonOfLogは{object}の値を取得します。しかし、デバッガはウォッチウィンドウにこれ以上の詳細を表示しません、私はこの変数を操作するためにどのメソッドを使用できるかわかりません。
渡されたデータが文字列化された複雑なオブジェクトであるMVCコントローラにJSONデータを渡すにはどうすればよいですか?
おかげで、 ノートルダム
私は、これはあなたがhttp://stackoverflow.com/questions/21578814/how-to-receive-json探しているものだと思います-in-a-mvc-5-action-a-a-paramter –