2010-09-30 3 views
0

Je convertis une application Web Forms en MVC.jQuery passant les paramètres au contrôleur MVC. Pourquoi mes params sont-ils vides?

J'ai une méthode js qui appelle une méthode d'action du contrôleur (ci-dessous)

function GetUsers(pageNum) { var sortTh = $('thead .sort', document.getElementById('usersTable')); var sortCol = sortTh.find('a').attr('rel');

// { } is declarative shorthand for new Object(). 
var userRequest = {}; 
userRequest.pageNum = pageNum; 
userRequest.pageSize = 10; //records per page 
userRequest.sortType = (sortTh.hasClass('ascending')) ? 'ascending' : 'descending'; 
userRequest.sortColumn = sortCol; 
//alert(userRequest.sortType + " - " + sortCol); 
// Create a data transfer object (DTO) with the proper structure. 
var DTO = { 'userRequest': userRequest }; 

//Ajax 
var urlMethod = "/Users/GetUsers"; //"../WebServices/ws_Users.asmx/GetUsers"; 
var jsonData = JSON.stringify(DTO); 
SendAjax(urlMethod, jsonData, ReturnGetUsers, 'get'); 

}

Ce code fonctionne, vous pouvez même voir le poste en Firebug.

{ "userRequest": "pageNum": 1, "pageSize": 10, "sorttype": "descendant", "sortColumn": "dateConnexionPrecedente"}}

[HttpPost] public ActionResult GetUsers(UsersModels.GetUserRequest userRequest) {

//Talk to Web Service 
var wsUsers = new WS_Users(); 
var userList = wsUsers.GetUsers(userRequest); 

return Json(userList); 

}

I définir un point d'arrêt dans le dessus et tous mes paramètres sont vides? Pourquoi oh pourquoi?

Voici le modèle:

public class GetUserRequest { public int pageNum; public int pageSize; public string sortType; public string sortColumn; }

Aide!

+0

Qu'est-ce que SendAjax et quels devraient être ses arguments? Qu'est-ce que ReturnGetUsers? – Sorpigal

Répondre

1

Je ne suis pas sûr mais je me demande si les membres de GetUserRequest doivent être des propriétés publiques plutôt que des champs publics?

+0

C'est tout !!! changé en propriétés et ça marche! Dans Web Forms, c'est bien d'être des champs. Merci! – Mark

1
SendAjax(urlMethod, jsonData, ReturnGetUsers, 'get'); 

Je ne sais pas ce qui se passe dans ce code SendAjax mais « get » ressemble à ce devrait être un « post » me

0

modèle GetUserRequest devrait être comme ça

public class GetUserRequest { 
    public int pageNum {get;set;} 
    public int pageSize {get;set;} 
    public string sortType {get;set;} 
    public string sortColumn{ get;set;} 
} 
Questions connexes