如何在API控制器中读取帖子数据 - MVC4

时间:2017-05-19 12:29:55

标签: asp.net-mvc rest asp.net-mvc-4 model-view-controller

我在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对象还是我不知道是什么?

1 个答案:

答案 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相同的属性名称