【问题标题】:AngularJS (Post) C# Web API $ScopeAngularJS (Post) C# Web API $Scope
【发布时间】:2025-12-26 04:25:16
【问题描述】:

我有一个 $scope。

为简单起见:

    var cars = {
        "car": [
            { "name": "wtf1" },
            { "name": "wtf2" },
            { "name": "wtf3" }
        ]
    }

然后我将此信息发送至:

    $scope.Update = facUpdate.doUpdate({
        stest: cars
    },{}, function success(data, status, headers, config) {
            console.log(data);
    }, function err(data, status, headers, config) {
        console.log(data);
        //errorhandler(data.status, $location)
    });

我的 C# API 中有两个模型。

public class CarModel
{
    public IList<Car> cars { get; set; }
}


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

最后:这是我试图获取数据的地方...

[HttpPost]
public HttpResponseMessage Post(CarModel stest)
{

    string json = JsonConvert.SerializeObject(queryString);

    StringContent sc = new StringContent(json);
    sc.Headers.ContentType = new MediaTypeHeaderValue("application/json");

    HttpResponseMessage resp = new HttpResponseMessage();
    resp.Content = sc;

    return resp;
}

标题信息

POST /api/UpdateTest?stest=Saab&stest=Volvo&stest=BMW HTTP/1.1
Host: localhost:53839
Accept: application/json, text/plain, */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Content-Type: application/json;charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/35.0.1916.114 Safari/537.36

简而言之,我的 Angular js 上有一个 $scope,它发生了变化,我想通过 post 将该对象传递回我的 api。

如果我使用一个简单的字符串示例,它可以工作,但是当我处理复杂的对象时,它就不起作用了。

有人知道为什么吗?

告诉我!


工厂信息

myApp.factory('facUpdate', function ($resource) {
    return $resource('/api/UpdateSettings/:eid', {}, {        
        doUpdate: { method: 'POST', isArray: false}
    })
});

ANSWER至少这对我有用...

在 Web API 上发布(string stest)

然后做

ChartSettingsModel yourobject= JsonConvert.DeserializeObject(stest);

【问题讨论】:

  • 如果在 JSON 中将 car 数组重命名为 cars 会发生什么?正如您所拥有的,JSON 与您的 CarModel 不匹配。我不能说这是否是整个问题,因为您没有真正指定它以何种方式不起作用。
  • 让我试试看.. 但是它基本上是空的。那也没用。
  • 基本上为空?那是什么?它要么是空的,要么不是。如果 JSON 的对象名称与 ViewModel 的属性不匹配,那么 ASP.NET 的模型绑定将不会......好吧,正确地绑定到模型。 :P 让我知道这是否有效,如果无效,请编辑您的问题,具体是什么不起作用。
  • 调试时。公共 HttpResponseMessage Post(CarModel stest) stest (carmodel) 为空。当我检查我的 requesturi 数据时,如下所示:'localhost:53839/api/ChartSettings?stest={"cars":[{"name":"wtf1"},{"name":"wtf2"},{"name":"wtf3"}] }'
  • 让我看看你发布数据的 js。

标签: c# angularjs asp.net-web-api2


【解决方案1】:

ChartSettingsModel myclass= JsonConvert.DeserializeObject(stest);

【讨论】: