Jon*_*nny 5 c# jquery json asp.net-web-api
像我之前的许多人一样,我正在尝试将多个参数传递给Web API项目.我尝试过在这个网站上提供的几种解决方案,但没有运气.我最近的失败迭代看起来如下:
public class UserDTO
{
public int userID;
public string username;
}
[HttpPost]
public string Post([FromBody]UserDTO userDTO)
{
return userDTO.userID.ToString() + " " + userDTO.username;
}
Run Code Online (Sandbox Code Playgroud)
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
var apiUrl = "http://localhost:55051/api/User/Post";
var userDTO = {
userID: 5,
username: "testuser"
};
$.ajax({
type: "POST",
url: apiUrl,
data: JSON.stringify(userDTO),
datatype: "json",
contenttype: "application/json; charset=utf-8"
)};
Run Code Online (Sandbox Code Playgroud)
Fiddler显示正确传递的JSON变量,在Raw视图中我可以看到:
{"userID":5,"username":"testuser"}
userID = 0
username = null
Run Code Online (Sandbox Code Playgroud)
我认为问题出在Web API上,并且由于我的POST似乎在Fiddler中正确格式化,因此使用JSON参数很困难.有任何想法吗?
小智 2
你的 jQuery ajax 调用不会失败吗?检查一下吗?
var apiUrl = "http://localhost:55051/api/UserController/Post";
Run Code Online (Sandbox Code Playgroud)
看到你的代码这可能应该是:
var apiUrl = "http://localhost:55051/api/User";
Run Code Online (Sandbox Code Playgroud)
控制器一词通常不是 URL 的一部分。您不必显式调用 POST,它应该按照约定选择它,因为您的 ajax 调用是 POST。
编辑:
上面的内容和你的 ajax 调用中的外壳如评论所述。
我个人使用 Firebug(Firefox 扩展)来调试此类情况。如果发现在这种情况下它比fiddler更方便。
| 归档时间: |
|
| 查看次数: |
5402 次 |
| 最近记录: |