3

次のスクリーンショットは、送信しているデータを示しています (firefox の firebug で表示)。以下のコードは、ajax メソッドが呼び出すメソッドを示しています。サーバー側のメソッド呼び出しをヒットすると、Date プロパティと Id プロパティが正しく入力されますが、(CustomerRequests 型の) 私の配列には値がありませんが、投稿内の CustomerRequests の数は正しいです。

何か案は?ありがとう

ここに画像の説明を入力

My Controller メソッド

   public ActionResult Show(Customers request)
   {
     .. 
     // Number of request.CustomerRequests is correct
     // Although request.CustomerRequests[0].Name == null ?? which is wrong

以下の顧客クラス:

[DataContract]
public class Customers
{

    [DataMember]
    public CustomerRequests[] CustomerRequests{ get; set; }

    [DataMember]
    public DateTime Date { get; set; }  // I can see this value 

    [DataMember]
    public int Id{ get; set; }  // I can see this value

}



[DataContract]
public class CustomerRequests
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Expression { get; set; }
}

Javascript

 $('textarea').each(function () {

   var theName = 'The Name';
   var theExpression = 'The Expression';

   var obj = {
                'Name': theName,
                'Expression': theExpression
             };

   expressionArray.push(obj);

});  // close each


// val is the posted data

var val = {
             'Id': '1',                        
             'Date': '2013-10-10',
             'CustomerRequests': $.makeArray(expressionArray)
          };

やってみましたがダメです。

JSON.stringify({ Customers: val })
4

2 に答える 2

1

これは正確な答えではありませんが、組み込みのシリアライザーを使用したことがないため、 Json.NETライブラリを使用することをお勧めします。私は長い間それを使用してきましたが、とても気に入っています。

あなたの質問についてはList<T>、配列の代わりに使用してみます。おそらくList、モデルのコンストラクターでインスタンス化しようとします。しかし、正直に言うと、これらは単なる推測です。

于 2013-06-20T17:56:21.383 に答える
1

結局のところ、content-type呼び出しに を追加し、 から名前を削除するだけdataです。のようなものです

$.ajax({
    url: '/controller/action',
    cache: false,
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(viewModel)
});

その点に注意してください:

  • URL をハードコーディングするのは悪い習慣です。@Url.Content("")またはそのようなものを使用する必要があります
  • JSON.stringify古いブラウザでは動作しない場合があります。このライブラリを追加する必要があるかもしれません: http://www.json.org/js.html
于 2013-06-20T19:24:42.750 に答える