1

どうやら私は何か間違ったことをしている、すべてを試しました。

最初は、オブジェクトの配列を角度の $http を使用して asp.net mvc コントローラーに送信する必要がありましたが、うまくいきませんでした。

次にjqueryを使ってみました。$.get$.post、さまざまなパラメーターを使用したメソッドを試しました$.ajax(伝統的、非伝統的、ありdataType:'json'、なし-まだ値を渡すことができません。これは私を殺しています。

$.ajax(
  url: '/Home/Foo'
  data: items: [{'name':'some'},{'name':'other'}])

public JsonResult Foo(Item[] items)
{
    return Json(items, JsonRequestBehavior.AllowGet);
}

public class Item
{
   public string name { get; set; }
}

私がそれから得ることができる最高のもの-アイテムをItem []配列として認識しますが、すべてのname値はnullです

4

3 に答える 3

1

この記事によると

http://encosia.com/asmx-scriptservice-mistake-invalid-json-primitive/

それは文字列でなければなりません:

$.ajax(
   url: '/Home/Foo'
   data: "{ 'items': [{'name':'some'},{'name':'other'}] }"

JSON.stringify を使用すると、問題が解決するはずです。それでも $http を使ってみる必要があります

于 2013-06-27T21:44:37.060 に答える
1

あなたのdata文字列 (すなわちdata: items: [{'name':'some'},{'name':'other'}]) は無効な JSON 構文ですが、自己回答の文字列化された JSON 文字列は正しい構文です。

オブジェクトを JSON 文字列に変換する必要はなく、標準の Javascript オブジェクトが機能するはずです。

それを次のように切り替えてみてください:

$.ajax(
    url: '/Home/Foo',
    data: { 
        'items': [{'name':'some'},{'name':'other'}]
    }
)
于 2013-07-08T04:59:34.430 に答える
1

JSON 文字列を MVC に渡すときは、必ず Content-Type を に設定してapplication/jsonください。それ以外の場合、MVC は JSON ではなく URLEncoded 形式のデータを想定します。

ただし、JSON は通常、配列を渡すのに最適であるため、正しい道を進んでいる必要があります。

于 2013-07-08T04:31:07.260 に答える