Możemy wywołać metodę kontrolera przy użyciu JavaScript/jQuery bardzo łatwo się następująco:
Załóżmy następującą jest metoda kontrolera nazywać powrocie tablicę niektórych obiektów klasy. Niech klasa jest „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);
}
Poniżej znajduje się kompleks typu (klasy)
public class A
{
public string property1 {get ; set ;}
public string property2 {get ; set ;}
}
Teraz przyszła kolej zadzwonić powyżej metody kontrolera przez jQuery. Poniżej znajduje się funkcja Jquery, która wywołuje metodę kontrolera.
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);
}
}
}
W powyższych funkcji Jquery „callControllerMethod” rozwijamy metody kontrolera URL i umieścić, że w zmiennej o nazwie „strMehodUrl” i wywołać metodę getJSON jQuery API.
ReceieveResponse to funkcja zwrotna odbierająca wartość odpowiedzi lub wartość zwracaną przez metodę kontrolera.
Tutaj wykorzystaliśmy JSON, ponieważ nie można skorzystać z obiektu C# klasy
bezpośrednio do funkcji Javascript, więc przekształca wynik (ARR), w sposób regulator do obiektu JSON w następujący sposób:
Json (arr, JsonRequestBehavior.AllowGet);
i zwrócił ten obiekt Json.
Teraz w funkcji wywołania zwrotnego JavaScript/JQuery możemy skorzystać z tego wynikowego obiektu JSON i pracować zgodnie z danymi odpowiedzi w interfejsie użytkownika.
Więcej Detaill click here
Więc ja to realizowane. $ ('# refreshGrid') load ('?/Client/GetAttachments id =' + ClientID); Mój kontroler klient wygląda następująco: ActionResult publicznego GetAttachments (int id) { // Niektóre logika ... PartialView powrotu ("~/Views/Client/ClientAttachmentGridView.ascx", pliki); } alert ($ ('# refreshGrid')) daje mi obiekt, a alert (id klienta) daje mi to, czego się spodziewam. Kontroler nie zostaje trafiony (w przeciwnym razie zobaczyłabym niektóre wywołania usługi sieciowej od skrzypka). Denerwujące jest to, że nie widzę żadnych komunikatów o błędach. – RailRhoad
Oooh, biorę to z powrotem. Dostaję 500 w skrzypce: Słownik parametrów zawiera wpis o wartości null dla parametru "id" typu nieululującego "System.Int32" dla metody "System.Web.Mvc.ActionResult GetAttachments (Int32)" w sekcji "CommercialLendingPlatform" .Controllers.ClientController ". Aby parametr był opcjonalny, jego typ powinien być typu referencyjnego lub typu Nullable.
Nazwa parametru: parametry – RailRhoad
Cudowny! Potrzebowałem zamiast tego klienta/GetAttachments/clientID! Zapomniałem o routingu adresów URL przez sekundę. Dziękuję wszystkim! – RailRhoad