0

私はこの共通の CUser クラスを持っています

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

そして、私のglobal.asaxのこのhttpルート

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

そして、それを処理するためのこのサーバーコード

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

しかし、それを実行するたびに、cUser の値は null (ユーザー名とパスワード) になるので、適切にシリアル化するために restsharp に何かをする必要がありますか?

4

1 に答える 1

3

これがあなたが望むものだと思います:

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

あなたがしていることは、プレースホルダーcUser.ToString()の代わりになるという結果になります。{cUser}

于 2012-05-24T22:23:28.593 に答える