2014-09-22 80 views
0

我想将对象ID传递给ApiController。目前没有任何事情可以通过。也没有错误。现在,当我在Get Call中特别放置一个JobId时,所有工作都正常,所以我被困在如何使它与任何JobId一起工作。如何从Angular Controller将对象传递给ApiController

查看

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

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

控制器

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

ApiController

// GET api/<controller>/5 
    public string Get(int? id) // allow nullable parameter 
    { 
     if (!id.HasValue) // if null return an empty string 
     { 
      return string.Empty; 
     } 

     // your code : 
     JobDataAdapter adapter = new JobDataAdapter(); 
     Job job = new Job(); 
     job = adapter.GetJob(id); 
     if (job == null) 
     { 
      return string.Empty; 
     } 

路由

config.Routes.MapHttpRoute(
     name: "PdfApi", 
     routeTemplate: "api/{controller}/{id}", 
    defaults: new { controller = "apiGeneratePdf", id = RouteParameter.Optional } 
    ); 
+0

你没有把id传给你的ajax调用。 – 2014-09-22 19:55:05

回答

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

这是一种方法。根据您的API的复杂程度,您还应该查看ngResource服务。

+0

工作,谢谢。我想过切换到ngResource。 – texas697 2014-09-22 19:58:00

+1

是的,当你用$ http重写相同的4次crud操作几次$资源变得有吸引力和IMO值得(也使得它,所以我肯定会在后端编写一致的RESTful位)。 – shaunhusain 2014-09-22 19:59:36

相关问题