【问题标题】:I want to get the new ID when new record is created using web API and angular resource我想在使用 Web API 和角度资源创建新记录时获取新 ID
【发布时间】:2015-03-02 23:07:35
【问题描述】:

我正在使用 Web API 和 Angular 资源来管理我的应用程序.. 在我的控制器中使用 Save 方法时,我想接收新保存的记录 ID...

我的 Web API 方法在响应 Created Message 中返回新 ID。但我无法阅读它...

这是我的服务:

'use strict';
appServices.factory('projectsService', function ($resource, ngAuthSettings) {
    var serviceBase = ngAuthSettings.apiServiceBaseUri;
    return $resource(serviceBase + '/api/project/:id', {}, {
        get: { method: 'GET', params: { id: '' }, isArray: true },
        getById: { method: 'GET', params: { id: '0' }, isArray: false },
        save: { method: 'POST' ,isArray: false},
        update: { method: 'PUT' },
        remove: { method: 'DELETE' }
    });
});

这是我的控制器方法:

 $scope.save = function ($event) {

        $event.preventDefault();

        $('#AddProjectForm').parsley().validate();
        if ($('#AddProjectForm').parsley().isValid() ) {
//HEre is my save method
            projectsService.save($scope.project).$promise.then(function (newid) {
    $location.path('/project/' + newid);
         },
             function (response) {

                 $scope.message = "Failed to register user due to:" + errors.join(' ');
             });
        }
    };

在我的 Web API 中,这是返回

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, projectRepository.NewID);
                return response;

有什么想法吗??

【问题讨论】:

  • 请注意:摆脱 jQuery。真是把你搞砸了。您永远不应该在控制器中有 DOM 引用,并且使用 Angular,您可能根本不需要使用 DOM 选择器。看起来您需要在这里使用 Angular 的表单/验证。 docs.angularjs.org/guide/forms
  • 感谢您的评论,我使用的 JQuery 是用于 Parsley valdiation.. 它提供了比 angualr 更好的简单验证...我希望我能找到任何更好的角度验证...甚至还有助于 ajax 验证...

标签: angularjs ngresource


【解决方案1】:

您很可能会从您的 api 传回一个 json 对象。所以,newid 可能是一个 json 对象。尝试更新这一行:

$location.path('/project/' + newid);

$location.path('/project/' + newid.id);

此外,请确保您的 api 确实在响应中传回了 id,如果上面的行不适合您,请检查 id 字段的属性名称。

更新:

尝试更新您的 web.api 响应函数,使其如下所示:

return Request.CreateResponse(HttpStatusCode.Created, new { projectRepository.NewID });

【讨论】:

  • 感谢您的回复,,,您能把如何将json对象与响应一起传回吗?通过返回以下内容,对象已经将 ID 作为松散值返回: HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, projectRepository.NewID);返回响应; projectRepository.NewID 保留已保存对象的新 ID。如何将其放入 ajax 对象中我真的不知道:D
  • 我想通了,它返回一个新 id 的数组,就像这样:如果 id 是 34,它会返回 {'3','4'}... 或者如果我返回一个类似“test”的字符串,它返回{'t','e','s','t'},所以毕竟我将错误的值传递给响应,如何传递正确的价值???
  • 看看我更新的答案。对您的 web.api 进行建议的修改,让我知道它对您的工作原理。
  • 您的问题解决了吗?如果您需要任何其他帮助,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
相关资源
最近更新 更多