2012-05-24 123 views
0

我有这个共同CUser类与RestSharp到MVC4 API服务器发布T得到空对象

public class CUser 
{ 
    public String Username { get; set; } 
    public String Password { get; set; } 
} 

然后,我有我的客户对这个代码,使用RestSharp

public void CreateUser() 
    { 
     RestRequest request = new RestRequest(Method.POST); 
     request.RequestFormat = DataFormat.Json; 
     request.Resource = "user/{cUser}"; 

     CUser user = new CUser 
     { 
      Username = "Foo", 
      Password = "BarBaz" 
     }; 

     request.AddParameter("cUser", user, ParameterType.UrlSegment); 

     client.PostAsync<int>(request, (response, handler) => 
      { 
       System.Diagnostics.Debug.WriteLine(response.StatusDescription); 
       System.Diagnostics.Debug.WriteLine("id: " + response.Data); 
      }); 
    } 

而在此http路线我的Global.asax

  routes.MapHttpRoute(
      name: "CreateUser", 
      routeTemplate: "api/{controller}/{cUser}", 
      defaults: new 
          { 
           controller = "User", 
           action = "CreateUser", 
           cUser = RouteParameter.Optional 
          }); 

这servercode来处理它

public int CreateUser(CUser cUser) 
    { 
     User user = new User(cUser); 
     LoginManager manager = new LoginManager(); 
     return manager.CreateUser(user); 
    } 

但是我每次运行它时cUser的值都是空的(用户名和密码),所以我需要做一些restsharp来使它正确序列化?

回答

3

我想这是你想要什么:

request.AddParameter("username", user.Username); 
request.AddParameter("password", user.Password); 

你在做什么会导致cUser.ToString()被替换为{cUser}占位符。

+0

如果我将网站更改为CreateUser(字符串用户名,字符串密码),它可以很好地工作,但如果将它更改为http://pastebin.com/AfsJhJyL,它仍会在服务器上的两个参数中都为空我可以发送对象 – Mech0z

+0

您不能在URL中发送对象。这仅仅是HTTP支持的事情。您可以使用AddBody()在请求主体中将其作为JSON发送。 –

+0

我不想发送对象本身,但我希望RestSharp和模型绑定器为我修复所有爵士乐,所以我只在一端提供一个对象,并在另一端提取该对象,然后将该addbody ? – Mech0z

相关问题