我在制作带控制器参数的ajax帖子时遇到了麻烦。虽然这有效:
$.post("../api/vorgang/blubb");
[HttpPost]
[Route(@"blubb")]
public void blubb()
{
// do amazing things here
}
当我为参数扩展它时,方法没有被击中:
$.post("../api/vorgang/blubb", { param1: "param1", param2: "param2"} );
[HttpPost]
[Route(@"blubb")]
public void blubb(string param1, string param2)
{
// method is not hit, why oh why
}
// the request text
param1=param1¶m2=param2
我看到它会导致
404:"找不到符合URI http://localhost:49412/api/vorgang/blubb.
的HTTP资源
我尝试将ajax调用更改为
$.post("../api/vorgang/blubb", JSON.stringify({
param1: "param1",
param2: "param2"
}));
这会将请求文本更改为
{"param1":"param1","param2":"param2"}
但是控制器仍然没有被击中。
我要感谢你的暗示!
答案 0 :(得分:1)
您使用HttpPost
传递参数的方式,我不确定它是否会起作用。正在通过这里提到的{{3}}方法。
或者,您可以尝试创建一个Model对象,让MVC完成繁重的任务。
public class TestController : ApiController
{
[HttpPost]
public void blubb(Parameters param1)
{
// method is not hit, why oh why
}
}
public class Parameters
{
public string param1 { get; set; }
public string param2 { get; set; }
}
你的AJAX电话:
var _parameters = {
param1: "param1",
param2: "param2"
};
$.ajax({
type: "POST",
url: "/api/Test/blubb",
cache: false,
data: JSON.stringify(_parameters),
contentType: "application/json; charset=utf-8",
success: function (data) { console.log("Success"); }
});
最终结果:
不确定,它有多大帮助!