2016-11-07 12 views
1

これは私のモデルクラスです:ASP.NETのWeb API POSTメソッドのパラメータは、常にnullである

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(); 
     } 
    } 
} 

私はpostメソッドを呼び出すようにしようとしていますGoogle ChromeのアプリPostman。

{ 
    Id : 1, 
    Name : "Sample" 
} 

getメソッドは機能しますが、ポストメソッドをデバッグするときは常にパラメータはnullです。

編集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

Bodyタブで "raw"のラジオボタンが選択されていることを忘れないでください。 – toadflakz

+0

それは働いてくれてありがとう、私は2,3日間働くことを得ようとしていた、ありがとう! – Saizaku

+0

@toadfladkxすでにラジオボタンが選択されていて、ヘッダーがありません – Saizaku

1

[FromBody]であなたのパラメータを飾るお試しください:郵便配達に次のリクエストヘッダを付加する

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

私はそれを試したが、まだ動作しません。 – Saizaku

関連する問題