2013-04-04 10 views
6

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?

Antwort

0

Warum nicht ->

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

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

statt

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

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

Hallo Jay, ich versuchte dies und keine Freude - Sie erhalten den Breeze-Fehler "Der 'Parameter' Parameter muss ein 'Objekt' sein". –

4

Sie können ein [FromUri] Attribut fehlen. Jedes Mal, wenn ich versuchte, ein komplexeres Objekt oder eine Reihe von Parametern zu übergeben, würde alles als null zurückkommen, bis ich dieses Attribut hinzugefügt hätte.

Verwandte Themen