我在Visual Studio 2010中使用向导创建了API控制器。
它创建了这个功能:
// POST api/Default1
public HttpResponseMessage PostUserProfile(UserProfile userprofile)
{
System.Diagnostics.Debug.WriteLine("Username: " + userprofile.UserName);
if (ModelState.IsValid)
{
db.UserProfiles.Add(userprofile);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, userprofile);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = userprofile.UserId }));
return response;
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
我无法添加[HttpPost]注释,因为我猜MVC 4使用较旧的API。我也为参数userprofile获取NullPointerException,这意味着它的数据类型错误。应该将send as参数更改为我的PostUserProfile()函数以及如何? 应该是Json对象还是我不知道是什么?
答案 0 :(得分:1)
1-您的网络API动作应如下所示。
[HttpPost]
public HttpResponseMessage PostUserProfile(HttpRequestMessage request, UserProfile userprofile)
{
// code here
}
2 - 你必须使用System.Web.Http而不是System.Web.MVC才能使用HttpPost。
3-您需要在客户端将javascript数据序列化为JSON,并且asp.net运行时会自动将其反序列化为UserProfile对象,前提是您的Javascript对象具有与UserProfile c#object相同的属性名称