Ich habe eine Suchseite, bei der der obere Rand der Seite Suchkriterien mit einer Suchschaltfläche ist. Am unteren Bildschirmrand werden die Ergebnisse angezeigt, wenn die Suchtaste gedrückt wird. In diesem Fall habe ich 6 verschiedene Suchkriterien, die der Benutzer eingeben kann. Ich möchte alle Kriterien in einer Klasse bündeln, damit meine Controller-Aktion das Json-Objekt als Klasse lesen kann. Mit FireBug kann ich sehen, dass mein Json korrekt erstellt wurde. Mit dem Debugger weiß ich, dass mein Controller/Action ausgelöst wird. Wenn ich jedoch das Klassenobjekt mit dem Debugger in der Steuerung/Aktion betrachte, sind alle Eigenschaften null oder null.JQuery mit Json zu rufen Controller/Aktion
Hier ist mein Controller .... [AcceptVerbs (HttpVerbs.Post)] public Action GetStudentByCritera (StudentSearchCriteraCV critera) { // Die Daten Viewdata [ "MAINDATA"] = studentBLLHdl.StudentFind (critera); return Ansicht(); }
Hier ist die JavaScript/JQuery, die den Controller ruft ... Funktion LoadResultTable() { // bauen Json Objekt 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>