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";
}
我需要帮助在现有的旧网站 (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";
}