Siamo in grado di chiamare il metodo di controllo utilizzando Javascript/Jquery molto facilmente come segue:
Supponiamo che segue è il metodo di controllo di essere chiamato restituisce un array di alcuni oggetti di classe. Lasciate che la classe è 'A'
public JsonResult SubMenu_Click(string param1, string param2)
{
A[] arr = null;
try
{
Processing...
Get Result and fill arr.
}
catch { }
return Json(arr , JsonRequestBehavior.AllowGet);
}
seguito è il tipo complesso (classe)
public class A
{
public string property1 {get ; set ;}
public string property2 {get ; set ;}
}
Ora era il turno di chiamare sopra il metodo di controllo da jQuery. Di seguito è riportata la funzione Jquery per chiamare il metodo controller.
function callControllerMethod(value1 , value2) {
var strMethodUrl = '@Url.Action("SubMenu_Click", "Home")?param1=value1 ¶m2=value2'
$.getJSON(strMethodUrl, receieveResponse);
}
function receieveResponse(response) {
if (response != null) {
for (var i = 0; i < response.length; i++) {
alert(response[i].property1);
}
}
}
In precedenza la funzione Jquery 'callControllerMethod' sviluppiamo il metodo di controllo URL e che mettere in una variabile denominata 'strMehodUrl' e chiamare il metodo getJSON di jQuery API.
receieveResponse è la funzione di callback che riceve il valore di risposta o di ritorno del metodo dei controller.
Qui fatto uso di JSON, poiché non si può fare uso dell'oggetto classe C#
direttamente nella funzione javascript, quindi abbiamo convertito il risultato (arr) nel metodo di controllo in oggetto JSON come segue:
Json (arr, JsonRequestBehavior.AllowGet);
e restituito quell'oggetto JSON.
Ora nella funzione di callback di Javascript/JQuery possiamo utilizzare questo oggetto JSON risultante e lavorare di conseguenza per mostrare i dati di risposta sull'interfaccia utente.
Per ulteriori detaill click here
Così ho implementato questo:. $ ('# refreshGrid') di carico ('?/Client/GetAttachments id =' + IDcliente); mio regolatore cliente si presenta così: GetAttachments ActionResult pubblico (int id) { // Alcuni logica ... ritorno PartialView ("~/Vista/client/ClientAttachmentGridView.ascx", file); } avviso ($ ('# refreshGrid')) mi sta dando un oggetto e alert (clientID) mi dà quello che mi aspetto. Il controller non viene colpito (altrimenti vedrei alcune chiamate al servizio web da violinista). La cosa fastidiosa è che non vedo nessun messaggio di errore. – RailRhoad
Oooh, riprendo quello. Sto ottenendo un 500 in fiddler: Il dizionario parametri contiene una voce nulla per il parametro 'id' di tipo non nullable 'System.Int32' per metodo 'System.Web.Mvc.ActionResult GetAttachments (Int32)' in 'CommercialLendingPlatform .Controllers.ClientController'. Per rendere un parametro facoltativo, il suo tipo dovrebbe essere un tipo di riferimento o un tipo Nullable.
Nome parametro: parametri – RailRhoad
Meraviglioso! Avevo bisogno di renderlo un client/GetAttachments/clientID invece! Hai dimenticato il routing dell'URL per un secondo. Grazie a tutti! – RailRhoad