我试图通过Breeze发送一个对象作为参数而没有成功.
使用以下代码我可以发送一个基本类型:
客户:
var query = EntityQuery
.from('account/authenticate')
.withParameters({ loginRequest: "hello" });
Run Code Online (Sandbox Code Playgroud)
服务器:
[BreezeController]
public class AccountController : ApiController
{
[HttpGet]
public LoginResult Authenticate(string loginRequest)
{
// String for loginRequest received successfully
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试传递复杂类型,则param始终为null:
客户:
var loginRequest = { userName: 'me', password: 'pass' };
var query = EntityQuery
.from('account/authenticate')
.withParameters({ loginRequest: loginRequest });
Run Code Online (Sandbox Code Playgroud)
服务器:
[BreezeController]
public class AccountController : ApiController
{
[HttpGet]
public LoginResult Authenticate(LoginRequest loginRequest)
{
// Object for loginRequest always null
}
}
Run Code Online (Sandbox Code Playgroud)
我相信这部分是因为Breeze总是使用GET进行查询.POST可能正确处理序列化,但我无法在Breeze API中看到任何强制POST的方法.
如果我传递了对象的JSON字符串表示,我可以在服务器端获取它,但这需要手动反序列化.我意识到我可以通过标准的WebAPI调用在Breeze之外执行此操作,但我正在尝试保持所有服务器端调用都在同一个管道中运行.
是否有可能做到这一点?