Ich versuche, ein Objekt als Parameter durch Breeze ohne Erfolg zu senden.Übergeben eines Objekts als Parameter zu Breeze-Controller-Aktion
Verwendung des folgenden Codes kann ich eine primitive Art senden:
Auftraggeber:
var query = EntityQuery
.from('account/authenticate')
.withParameters({ loginRequest: "hello" });
Server:
[BreezeController]
public class AccountController : ApiController
{
[HttpGet]
public LoginResult Authenticate(string loginRequest)
{
// String for loginRequest received successfully
}
}
Allerdings, wenn ich versuche, und einen komplexen Typ verzichten, die param ist immer null:
Client:
var loginRequest = { userName: 'me', password: 'pass' };
var query = EntityQuery
.from('account/authenticate')
.withParameters({ loginRequest: loginRequest });
Server:
[BreezeController]
public class AccountController : ApiController
{
[HttpGet]
public LoginResult Authenticate(LoginRequest loginRequest)
{
// Object for loginRequest always null
}
}
Ich glaube, das ist zum Teil, weil Breeze immer ein GET für Abfragen verwendet. Ein POST kann die Serialisierung korrekt verarbeiten, aber ich sehe in der Breeze-API keine Möglichkeit, einen POST zu erzwingen.
Wenn ich eine JSON-String-Darstellung des Objekts übergeben, kann ich es serverseitig abholen, aber das erfordert manuelle Deserialisierung. Mir ist klar, dass ich dies außerhalb von Breeze mit einem Standard-WebAPI-Aufruf tun könnte, aber ich versuche, alle meine serverseitigen Aufrufe durch die gleiche Pipeline laufen zu lassen.
Ist es möglich, dies zu tun?
Hallo Jay, ich versuchte dies und keine Freude - Sie erhalten den Breeze-Fehler "Der 'Parameter' Parameter muss ein 'Objekt' sein". –