1

显然我做错了什么,尝试了一切。

最初我需要使用 Angular 的 $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值都是空的

4

3 回答 3

1

according to this article

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

it should be a string:

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

Now using JSON.stringify should solve my problem. Still gotta try using $http

于 2013-06-27T21:44:37.060 回答
1

将 JSON 字符串传递给 MVC 时,请务必将 Content-Type 设置为application/json. 否则,MVC 将期望 URLEncoded 格式的数据而不是 JSON。

JSON 通常最适合传入数组,因此您应该走在正确的道路上。

于 2013-07-08T04:31:07.260 回答
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 回答