2016-01-23 30 views
0

這裏是我的AngularJS控制器代碼從我發送HTTP POST請求到服務器:

'use strict'; 

    var input = {title: "", note:""}; 

    notes.controller('inputController', function inputController($scope, $http) { 


    $scope.cancleInput = function() { 
//not yet implemented 
    } 

    $scope.saveInput = function() { 
     input.title = $scope.title; 
     input.note = $scope.note; 


     $http.post("/saveData/writeData", input); 
    } 

}) 

這裏是我的代碼C#控制器內:

public class saveDataController : Controller 
    { 
      public static void writeData(input input) 
      { 
       var jsonString = new JavaScriptSerializer().Serialize(input); 
       //other code 
      } 

    } 

的HTTP POST調用不能識別C#方法。 我很確定我的網址錯了,或者我缺少任何C#屬性。

我收到以下錯誤: POST http://localhost:56171/saveData/writeData 500(內部服務器錯誤)

C#的方法不打那麼它永遠不會被髮布請求被稱爲破發點。

+0

這JS錯誤你得到?在這裏給你的角度js控制器聲明代碼。 – ranakrunal9

+0

@ ranakrunal9我將信息添加到您要求的帖子中。 –

回答

0

這裏是我做過什麼,使其工作:

我添加自定義API WebApiConfig文件中的配置。

config.Routes.MapHttpRoute(
       name: "ActionApi", 
       routeTemplate: "api/{controller}/{Action}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 

然後我根據新的Api配置修改了HTTP發佈URL。

 $http.post("/api/saveData/writeData", input); 

然後我讓C#控制器從ApiController繼承。 我做的最後一項更改是我爲C#方法添加了[HTTP POST]屬性並刪除了static關鍵字。 (我不明白爲什麼在方法定義爲「靜態」提出通過HTTP POST檢測不到的方法。)

public class saveDataController : ApiController 
{ 

    [HttpPost] 
    public void writeData(input input) 
    { 

     //bunch of code 
    }  

} 
0

我想你應該通過從你的c#控制器中的輸入流數據獲取發佈數據來檢查。你會得到500錯誤,因爲角度$ http將發佈帶有「application/json」內容類型的ajax請求,而這種內容類型通過Request.Form集合無法訪問。通過改變公共

public static void writeData(input input) 

嘗試

public static void writeData() 

,並使用Request.InputStream獲取數據。

var Res = new StreamReader(Request.InputStream); 
+0

它沒有達到中斷點,所以writeData()函數永遠不會被post請求調用。我相信我發送郵寄請求的方式有些問題。 @ ranakrunal9 –

0

嘗試通過從ApiController繼承和裝飾方法有HttpPost動詞如下創建API控制器 -

public class saveDataController : ApiController 
    { 
     [HttpPost] 
     public static void writeData(input input) 
     { 
      var jsonString = new JavaScriptSerializer().Serialize(input); 
      //other code 
     } 

    } 
+0

Thanx爲您的建議,但它不工作。 –

相關問題