【发布时间】:2013-01-24 15:19:31
【问题描述】:
我似乎无法让它工作......我在客户端上有一些这样的 jQuery:
$.ajax({
type: "POST",
url: "api/report/reportexists/",
data: JSON.stringify({ "report":reportpath }),
success: function(exists) {
if (exists) {
fileExists = true;
} else {
fileExists = false;
}
}
});
在我的 Web.API 控制器中,我有一个这样的方法:
[HttpPost]
public bool ReportExists( [FromBody]string report )
{
bool exists = File.Exists(report);
return exists;
}
我只是检查一个文件是否存在于服务器上,并返回一个关于它是否存在的布尔值。我发送的报告字符串是一个 UNC 路径,所以报告路径看起来像 '\\some\path\'。
我可以触发脚本,并在我的 ReportExists 方法中设置断点,但报告变量始终为空。
我做错了什么?
我还看到了一种使用 .post 和 postJSON 发布的方法。也许我应该使用其中之一?如果是这样,我的格式是什么?
更新: 可能还有一条线索——如果我删除 [FromBody],那么我的断点根本不会被命中——“未找到与请求匹配的 http 资源”。我正在查看的示例表明不需要 [FromBody]...?
【问题讨论】:
-
$.ajax更适合这种情况,因为您可能还需要将contentType: "application/json"作为$.ajax的选项包含在内 -
请务必检查您的 ModelState 是否有错误,以防绑定参数时出现问题。
标签: c# jquery asp.net-web-api http-post