2016-01-23 97 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为您的建议,但它不工作。 –

相关问题