如何使用GET作为承诺进行POST

时间:2014-09-23 00:25:06

标签: c# angularjs asp.net-web-api angular-promise

现在我可以选择已存在于数据库中的作业并将其发送到web api控制器以导出为PDF。我现在需要创建一个Job并将其发送到同一时间进行转换。所以我需要一些帮助,了解最佳方法是什么?我是否需要POST它,然后有一个函数调用一个Action来获取在db中创建的最新Job?或者我可以以某种方式将表单转换为可以传递给Api控制器的对象,然后再进行POST操作?我认为后者会更容易,但我将对象发送到api控制器的Action是GET调用吗?所以这是我如何发送已经在db

中的作业
<div class="inline-fields">
 <label>JobId:</label>
 <input ng-model="currentItem.JobId" type="text">
 <label>JobName:</label>
 <input ng-model="currentItem.JobName" type="text">
</div>

<input ng-click="EmailPdf(currentItem)" type="button" value="Email"/>

控制器

$scope.EmailPdf = function () {
   var id = $scope.currentItem.JobId
    $http.get('/api/Pdf/' + id).success(function () {
        $scope.PrintPreviewModal();
    });
}

Api控制器

 public string Get(int? id)
    {
        if (!id.HasValue)
        {
            return string.Empty;
        }
  JobDataAdapter adapter = new JobDataAdapter();
        Job job = new Job();
        job = adapter.GetJob(id);
        if (job == null)
        {
            return string.Empty;
        }
        try
        {

这就是我创建作业的方式

<div class="inline-fields">
    <label>Number:</label>
    <input ng-model="currentItem.JobNumber" type="text">
</div>
<div class="inline-fields">
    <label>Address:</label>
    <input ng-model="currentItem.CustomerAddress" type="text">
</div>
<div class="inline-fields">
    <label>Name:</label>
    <input ng-model="currentItem.JobName" type="text">

</div>
<input type="submit" value="Save" />
<input ng-click="EmailPdf()" type="button" value="Email" />

//Post New Job
$scope.submitJob = function () {
   var data = {
     JobNumber: $scope.currentItem.JobNumber,
     JobName: $scope.currentItem.JobName,
     CustomerAddress: $scope.currentItem.CustomerAddress,
  }
    $http.post('/api/apiJob/PostNewJob', data).success(function (data, status, headers) {
        console.log(data); window.top.location.reload();
    });

};

1 个答案:

答案 0 :(得分:0)

如果我理解您要做的事情,您可以通过PostNewJob呼叫成功调用您的pdf函数。类似的东西:

$http.post('/api/apiJob/PostNewJob', data).success(function (data, status, headers) {
    console.log(data);
    // use the new object to call the Pdf api
    $http.get('/api/Pdf/' + data.id).success(function () {
        $scope.PrintPreviewModal();
        window.top.location.reload();
    });
});