Beginnen wir mit einigen grundlegenden Controller-Aktionen:
public class FeiertagController
{
IFeiertagService feiertagService = new FeiertagService();
public ActionResult EditFeiertag()
{
// ... gib deine Hauptbearbeitungsansicht zurück
return View();
}
// Wird von deinem jquery ajax-Aufruf aufgerufen
public PartialResult GetFeiertagTable()
{
var feiertagData = messageService.getLatestFeiertagData();
var viewModel = new FeiertagViewModel();
feiertagViewModel.feirtagTableData = feiertagData;
return PartialView("FeiertagTableView", viewModel);
}
}
Also, EditFeiertag() wird verwendet, um deine gesamte Bearbeitungsseite zu rendern, und diese Seite wird einen Aufruf an GetFeiertagTable() machen, wenn sie deine Teilanzeige asynchron rendern will.
Jetzt, in deiner Ansicht, nehmen wir an, du hast etwas wie:
// ... Einige Menüpunkte
Tabelle neu laden
Dies funktioniert gut und lädt deine Tabelle einmal. Aber du möchtest die Feiertag-Tabelle neu laden, wenn du auf ein bestimmtes Element klickst (in unserem Fall #ReloadLink).
Füge folgendes zum Teil deiner Seite hinzu:
jQuery(document).ready(function($) {
$('#ReloadLink').click(function(e)
{
e.preventDefault(); // stoppe das Standardverhalten des Links
$('#FeiertagTable').load('/Feiertag/GetFeiertagTable');
});
});
Dadurch wird eine Ereignisbehandlung für das Klickereignis deines Neu laden-Links hinzugefügt, die eine jquery load() Methode aufrufen wird. Diese Methode ist ein vereinfachter Ajax-GET-Anforderung und wird den Inhalt des ausgewählten divs (FeiertagTable) durch das Erhaltene ersetzen.
Unsere GetFeiertagTable() Controller-Aktion wird die Teilanzeige zurückgeben, die dann in dieses div eingefügt wird.
Ich hoffe, das bringt dich in die richtige Richtung!