2016-12-04 48 views
2

我需要在现有的旧网站(WebForms/Umbraco 4)上使用Angular 1.5的帮助。旧WebForms上的AngularJS

GET工作

C#

public class MyController : ApiController 
{ 
    [System.Web.Http.HttpGet] 
    public string Test(int id) 
    { 
     return "ok"; 
    } 
} 

JS

$http.get("/api/My/Test?id=1"); 

但POST不起作用

C#

public class MyController : ApiController 
{ 
    [System.Web.Http.HttpPost] 
    public string Test(int id) 
    { 
     return "ok"; 
    } 
} 

JS

$http.post("/api/My/Test", {id: 1}); 

没有HTTP资源发现匹配的请求URI 'http://localhost:8431/api/My/Test'。


如何使它与POST一起工作?

回答

0

这是我最后做的是解决

[System.Web.Http.HttpPost] 
public string Test() 
{ 
    string jsonStr = Request.Content.ReadAsStringAsync().Result; 
    dynamic data = JObject.Parse(jsonStr); 
    var id = data.id.Value; 
    return "ok"; 
} 
1

您将id作为请求主体的一部分传递,因此您需要将其定义为这样。

尝试

public class MyController : ApiController 
{ 
    [System.Web.Http.HttpPost] 
    public string Test([FromBody] int id) 
    { 
     return "ok"; 
    } 
} 

通知的属性的方法声明为测试()

+0

谢谢Joniff的问题!我仍然无法使它工作 >参数字典中包含'MyController'中方法'System.String Test(Int32)'的非空类型'System.Int32'的参数'id'的空项。 – Aximili