6

Breeze を介してオブジェクトをパラメーターとして送信しようとしていますが、成功しません。

次のコードを使用して、プリミティブ型を送信できます。

クライアント:

var query = EntityQuery
    .from('account/authenticate')
    .withParameters({ loginRequest: "hello" });

サーバ:

[BreezeController]
public class AccountController : ApiController
{
    [HttpGet]
    public LoginResult Authenticate(string loginRequest)
    {
        // String for loginRequest received successfully
    }
}

ただし、複合型を渡そうとすると、param は常に null になります。

クライアント:

var loginRequest = { userName: 'me', password: 'pass' };

var query = EntityQuery
    .from('account/authenticate')
    .withParameters({ loginRequest: loginRequest });

サーバ:

[BreezeController]
public class AccountController : ApiController
{
    [HttpGet]
    public LoginResult Authenticate(LoginRequest loginRequest)
    {
        // Object for loginRequest always null
    }
}

これは、Breeze が常にクエリに GET を使用しているためだと思います。POST はシリアル化を正しく処理する可能性がありますが、Breeze API で POST を強制する方法がわかりません。

オブジェクトの JSON 文字列表現を渡すと、サーバー側で取得できますが、これには手動での逆シリアル化が必要です。標準の WebAPI 呼び出しを使用して Breeze の外でこれを実行できることはわかっていますが、サーバー側のすべての呼び出しを同じパイプラインで実行するようにしています。

これを行うことは可能ですか?

4

2 に答える 2

4

[FromUri] 属性が欠落している可能性があります。より複雑なオブジェクトまたはパラメーターのセットを渡そうとすると、その属性を追加するまで、すべてが null として返されます。

[BreezeController]
public class AccountController : ApiController
{
    [HttpGet]
    public LoginResult Authenticate([FromUri] LoginRequest loginRequest)
    {
        // Object for loginRequest always null
    }
}
于 2013-11-11T11:49:23.447 に答える
0

使わない理由 ->

var loginRequest = { userName: 'me', password: 'pass' };

var query = EntityQuery
   .from('account/authenticate')
   .withParameters( loginRequest);

それ以外の

var loginRequest = { userName: 'me', password: 'pass' };

var query = EntityQuery
   .from('account/authenticate')
   .withParameters({ loginRequest: loginRequest });
于 2013-04-04T17:08:24.107 に答える