2013-04-04 30 views
6

Tôi đang cố gắng gửi một đối tượng như một tham số thông qua Breeze mà không thành công.Truyền một đối tượng làm tham số cho hành động điều khiển Breeze

Sử dụng đoạn mã sau tôi có thể gửi một loại nguyên thủy:

Chủ đầu tư:

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

Tuy nhiên, nếu tôi cố gắng và vượt qua một loại phức tạp lên, thông số luôn là rỗng:

Khách hàng:

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

Tôi tin rằng đây là một phần vì Breeze luôn luôn sử dụng một GET cho các truy vấn. POST có thể xử lý tuần tự một cách chính xác, nhưng tôi không thể thấy bất kỳ cách nào trong API Breeze để buộc POST.

Nếu tôi bỏ qua một biểu diễn chuỗi JSON của đối tượng, tôi có thể nhặt nó lên phía máy chủ, nhưng điều này yêu cầu deserialization thủ công. Tôi nhận ra rằng tôi có thể làm điều này bên ngoài Breeze với một cuộc gọi WebAPI chuẩn, nhưng tôi đang cố gắng giữ cho tất cả các cuộc gọi phía máy chủ của tôi chạy qua cùng một đường ống.

Có thể thực hiện việc này không?

Trả lời

0

Tại sao không sử dụng ->

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

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

thay vì

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

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

Xin chào Jay, tôi đã thử điều này và không có niềm vui - bạn nhận được lỗi Breeze "Tham số 'tham số phải là' đối tượng '". –

4

Bạn có thể bị thiếu một [FromUri] thuộc tính. Bất cứ lúc nào tôi đã cố gắng để vượt qua một đối tượng phức tạp hơn hoặc tập hợp các tham số tất cả mọi thứ sẽ trở lại như null cho đến khi tôi thêm thuộc tính đó.

[BreezeController] 
public class AccountController : ApiController 
{ 
    [HttpGet] 
    public LoginResult Authenticate([FromUri] LoginRequest loginRequest) 
    { 
     // Object for loginRequest always null 
    } 
} 
Các vấn đề liên quan