0

ここでfiddlerを使用すると、投稿されたデータが表示されます。

first.Id=1&first.Value=This+is+my+first+name.&second.Id=2&second.Value=The+second+one.

コントローラ上:

[HttpPost]
public void Set(EditSettings[] settings)
{
   //the settings is always null
}

私はここSOでたくさんの質問を試しましたが、どれもうまくいきませんでした!

設定が2つしかないため、パラメーターを分離し、ajaxpostリクエストで偽造されたオブジェクトを使用することができました。

今私の質問は、最初の文字列の代わりにどのタイプの文字列をモデルバインダーに渡す必要があるかということです。「最初の」または「2番目の」パラメータ名がないので、そこで何を変更する必要がありますか?

4

2 に答える 2

1

これらの値はindexで送信されていないため、コントローラーアクションで配列を使用してこれらの値にアクセスすることはできません。uは次のようにしてデータを配列として送信できます。

$.ajax({
 url="Url For Action",
data = { data[0].Id : "0" ,  data[0].Value : "This is my first name" , data[1].Id : "1" ,  data[1].Value : "This is my second one"};
});
public void Set([DataBind(Prefix="data")] EditSettings[] settings)
{

}
于 2012-12-09T16:02:45.130 に答える
0

JSONの代わりにクエリ文字列を投稿するのはなぜですか。私があなたの場合、JSON.stringifyを使用すると、次のようになります。

var settings= new Array();
settings.push({ "id": "1", "value": "This+is+my+first+name." });

次に、JQuery ajax呼び出しで、次の手順を実行します。

$.ajax({
        url: 'You URL',
        type: 'POST',
        datatype: "json",
        traditional: true,
        data: { 
            settings: JSON.stringify(settings),          
        },
        success: function () { window.alert('success'); },
        error: function (event, request, settings) {  
            window.alert('AjaxError' + ' : ' + settings); },
        timeout: 20000
});
于 2012-12-09T23:15:51.383 に答える