J'ai une page de recherche où le haut de la page est un critère de recherche avec un bouton de recherche. Le bas de l'écran est le résultat de la pression sur le bouton de recherche. Dans ce cas, j'ai 6 critères de recherche différents que l'utilisateur peut entrer. Je voudrais regrouper tous les critères dans une classe afin que mon action Controller puisse lire l'objet JSON en tant que classe. En utilisant FireBug, je peux voir que mon JSON est construit correctement. En utilisant le débogueur, je sais que mon contrôleur/action est viré. Cependant quand je regarde l'objet de classe avec le débogueur dans le contrôleur/action, toutes les propriétés sont nulles ou nulles.JQuery utilisant Json pour appeler Controller/Action
Voici mon contrôleur .... [AcceptVerbs (HttpVerbs.Post)] publique ActionResult GetStudentByCritera (StudentSearchCriteraCV critera) {// Obtention des données ViewData [ "MAINDATA"] = studentBLLHdl.StudentFind (critera); return Voir(); }
Voici le JavaScript/JQuery qui appelle le contrôleur ... fonction LoadResultTable() { // construire objet JSON envoyer var = dataToSend BuildJson()
$.ajax({
url: "GetStudentByCritera",
type: 'POST',
data: dataToSend,
dataType: 'json',
contentType: "application/json; charset=utf-8",
beforeSend: ClientSideValidate,
success: function(result)
{
alert(result.Result);
$('#SearchResult').html(result.Result).show();
// UnBlock UI
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
// UnBlock UI
// not sure how to handel error
alert("error happen when posting to 'GetStudentByCritera'")
// typically only one of textStatus or errorThrown
// will have info
this; // the options for this ajax request
}
});
}
function BuildJson()
{
// building Json
var dataForClass = { "StudentSearchCriteraCV" : [{
"StudLname": $("input[name='StudentSearchCriteraCV.StudLname']").val(),
"StudFname": $("input[name='StudentSearchCriteraCV.StudFname']").val(),
"Ssn": $("input[name='StudentSearchCriteraCV.Ssn']").val(),
"StudId": $("input[name='StudentSearchCriteraCV.StudId']").val(),
"Sex": $("input[name='StudentSearchCriteraCV.Sex']").val(),
"Race": $("input[name='StudentSearchCriteraCV.Race']").val()
}]};
return $.toJSON(dataForClass);
}
function ClientSideValidate()
{
// Block the UI
alert("In the ClientSideValidate");
// if error UNBlock UI
// return true if client side data is good.
return true;
}
</script>