使用Angular时,表单数据未达到Web Api

时间:2015-01-19 12:18:31

标签: angularjs asp.net-web-api

我正在尝试使用angular将表单数据发布到ASP.NET Web API。所以我有:

<form name="form" data-ng-controller="SubscriberController">
  <input data-ng-model="subscriber.name" name="name" type="text"/>
  <input data-ng-model="subscriber.email" name="email" type="text"/>
  <input data-ng-click="create(subscriber)" type="submit" value="Send" />
</form>

application.service('SubscriberService', function ($http) {
  return {
    Create: function (subscriber) {
      console.log(subscriber);
      return $http.post('api/subscribers/create', { 'subscriber': subscriber });
    }
  }
});

application.controller('SubscriberController', function SubscriberController($scope, SubscriberService) {
  $scope.create = function (subscriber) {
    SubscriberService.Create(subscriber)
      .success(function (data, status, headers, config) { })
      .error(function (data, status, headers, config) { });
  };
});

最后在ASP.NET API上我有以下内容:

public class SubscriberController : ApiController {
  [Route("api/subscribers/create"), HttpPost]
  public void Create([FromBody]SubscriberCreateModel subscriber) {
     // Create subscriber
  } // Create
}

public class SubscriberCreateModel {
  public Int32 Country { get; set; }
  public String Email { get; set; }
  public String Name { get; set; }        
}

在我的角度服务上,我正在记录订阅者,我得到:

Object { name="john", email="john@something.pt" }

问题是在控制器上,订阅者属性,电子邮件和姓名都为空...

知道我缺少什么吗?

2 个答案:

答案 0 :(得分:0)

您需要对数据进行编码并将数据作为网址编码发送,请查看我的文章,了解如何在此处使用带有angularjs的web api 2 http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En

希望这有帮助

答案 1 :(得分:0)

您必须在html中为 SubscriberController创建对象

<form name="form" data-ng-controller="SubscriberController as subscriber">
  <input data-ng-model="subscriber.name" name="name" type="text"/>
  <input data-ng-model="subscriber.email" name="email" type="text"/>
  <input data-ng-click="create(subscriber)" type="submit" value="Send" />
</form>