代码之家  ›  专栏  ›  技术社区  ›  doorman

将Angularjs$save方法与.Net Web Api一起使用

  •  0
  • doorman  · 技术社区  · 11 年前

    我正在使用Angularjs$Resource$save CRUD方法将数据提交到RESTFull.Net Web API Web服务:

    phone.$save({}, function (data) {
            alert('success');
        }, function (data) {
            alert('failed');
        });
    

    其中phone是$resource对象。调用成功地将电话对象传递到Web API:

    public async Task<Phone> Post([FromBody]Phone phone)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    phone.CreatedDate = DateTime.Now;
                    this.Uow.Phones.Add(phone);
                    this.Uow.Commit();
    
                    return phone;
                }     
            }
            catch (Exception ex)
            {               
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
    
            }
            return null;
        }
    

    但当返回响应时,会触发失败的回调,并出现以下错误:

    “”ObjectContent“1”类型未能序列化的响应正文 内容类型‘application/json;字符集=utf-8'。"

    在Angularjs的$save函数文档中,我们有:

    card.$save();
    // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'}
    // server returns: {id:456, number:'1234', name: 'J. Smith'};
    

    这意味着响应应该返回相同的对象,但带有更新的字段。

    如何从Web Api返回有效的响应?

    谢谢

    1 回复  |  直到 11 年前
        1
  •  0
  •   doorman    11 年前

    事实证明,这是一个循环参考错误,我按照说明解决了这个错误 here