2

jquery から MVC コントローラーにオブジェクトを投稿しようとしています。オブジェクトは正常に渡されますが、すべてのプロパティが null (または bool の場合は false) です。

fwiw、JSON.stringify myObect を実行すると、まったく渡されず、コントローラー内の theObect が null になります。

MVC4、.net 4.5、jQuery 1.9.1 を使用しています

どんな助けでも感謝します。

jQuery 関数

var myObject =
{
    Property1: true,
    Proerty2: true
};

$.ajax({
    type: 'POST',
    url: '/myController/StartProcess/',
    data: { theObject: myObject }
});

コントローラ

private async void StartProcess(myObject theObject)
{
     // theObect can be seen successfully but property1 and property2 are false
     // if I change them to strings they are null
     ...
}

クラス

public class myObject
{
    public bool Property1 { get; set; }
    public bool Property2 { get; set; }
}

編集:

解決策は次のとおりです。

$.ajax({
    type: 'POST',
    url: '/myController/StartProcess/',
    data:  myObject
});

なぜこれが機能し、他に何も機能しないのかについて誰かが光を当てることができれば、それは大歓迎です。すべてのパラメーターを myObject に配置する必要があるため、これは優れたソリューションではありません。この手法を使用して追加のパラメーターを渡すことはできません。また、公式のチュートリアルを含め、オンラインで見つけたすべての情報が JSON.Strinify(myObect) というデータを使用すると言っている理由についても興味がありますが、これにより myObject のすべてのプロパティが null (または false) になります。

それでも咆哮のおかげで、少なくとも私はこれを乗り越えることができます。

4

6 に答える 6

1

これを試して

$.ajax({
    type: 'POST',
    url: '/myController/StartProcess/',
    data: myObject
});
于 2013-05-22T16:05:09.193 に答える
0

わかりました、ついにそれを理解しました。オブジェクトとともに追加のパラメーターを渡す方法を示す完全かつ適切なソリューションを次に示します。

jQuery:

var myString= "my paramter";
var myObject =
{
     Property1: true,
     Property2: true
};

var DTO = { param1: myString, param2: myObject };

$.ajax({
    contentType: "application/json; charset=utf-8",
    type: 'POST',
    url: 'myController/StartProcess',
    data: JSON.stringify(DTO)
});

コントローラ:

[HttpPost] // notice this additional attribute!
private async void StartProcess(string param1, myObject param2)
{
     // param2 parameters are all true! param1 shows correctly too.
     ...
}

クラス

public class myObject
{
    public bool Property1 { get; set; }
    public bool Property2 { get; set; }
}
于 2013-05-23T09:15:58.713 に答える