2016-11-07 2 views
1

Это мой модели класс:ASP.NET параметр Web API сообщение метод всегда пустой

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace Test.Models 
{ 
    public class User 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     //public DateTime startTime { get; set; } 
     //public DateTime endTime { get; set; } 
     //public int Age { get; set; } 
     //public string Adress { get; set; } 
    } 
} 

Это мой класс контроллера:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 
using Test.DBA; 
using Test.Models; 

namespace Test.Controllers 
{ 
    public class UserAPIController : ApiController 
    { 
     ApiDbContext dbContext = null; 
     public UserAPIController() 
     { 
      dbContext = new ApiDbContext(); 
     } 
     [HttpPost] 
     public IHttpActionResult InsertUser(User user) 
     { 
      dbContext.Users.Add(user); 
      dbContext.SaveChangesAsync(); 

      return Ok(user.Name); 
     } 

     public IEnumerable<User> GetAllUser() 
     { 
      var list = dbContext.Users.ToList(); 
      return list; 
     } 

     [HttpPost] 
     public IHttpActionResult DeleteUser(User user) 
     { 
      dbContext.Users.Remove(user); 
      dbContext.SaveChanges(); 

      return Ok(user.Name); 
     } 

     [HttpGet] 
     public IHttpActionResult ViewUser(int id) 
     { 
      var student = dbContext.Users.Find(id); 
      return Ok(student); 
     } 

     [HttpPost] 
     public IHttpActionResult UpdateUser(User user) 
     { 
      User std = dbContext.Users.Find(user.Id); 

      std.Name = user.Name; 
      //std.startTime = user.startTime; 
      //std.endTime = user.endTime; 
      //std.Age = user.Age; 
      //std.Adress = user.Adress; 

      dbContext.Entry(std).State = System.Data.Entity.EntityState.Modified; 
      dbContext.SaveChangesAsync(); 

      return Ok(); 
     } 
    } 
} 

Я пытаюсь вызвать метод пост с приложение Google Chrome для почтовых сообщений. Я называю это с сырыми телами JSON:

{ 
    Id : 1, 
    Name : "Sample" 
} 

Методы получения работой, но когда я отладка методы пост параметры всегда нуль.

Edit 1: Маршрутизация:

config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{action}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
     ); 
+0

Какой тип маршрутизации вы используете? – toadflakz

+0

Я отредактировал исходное сообщение. – Saizaku

+0

Что вы используете для заголовков Accept и Content-Type? – foobar

ответ

1

Попробуйте добавить следующий заголовок запроса к почтальону:

Content-Type: application/json 
+0

Не забывайте, что переключатель «сырой» должен быть выбран на вкладке «Тело». – toadflakz

+0

Спасибо, что это сработало, я пытался заставить это работать на пару дней, большое спасибо! – Saizaku

+0

@toadfladkx У меня уже была выбрана радиокнопка, просто отсутствует заголовок – Saizaku

1

Попробуйте украшая ваши параметры с [FromBody]:

public IHttpActionResult DeleteUser([FromBody]User user) 
+1

Я просто попробовал, все еще не работает. – Saizaku

Смежные вопросы