AngularJS 在旧的 WebForms 上

AngularJS on old WebForms

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

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});

No HTTP resource was found that matches the request URI 'http://localhost:8431/api/My/Test'.


如何让它与 POST 一起工作?

您将 id 作为请求正文的一部分传递,因此您需要这样定义它。

尝试

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

注意 Test()

的方法声明中的 [FromBody] 属性

这就是我最终解决问题的方法

[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";
}