Commençons par quelques actions de contrôleur de base:
public class FeiertagController
{
IFeiertagService feiertagService = new FeiertagService();
public ActionResult EditFeiertag()
{
// ... return your main edit view
return View();
}
// Will be called by your jquery ajax call
public PartialResult GetFeiertagTable()
{
var feiertagData = messageService.getLatestFeiertagData();
var viewModel = new FeiertagViewModel();
feiertagViewModel.feirtagTableData = feiertagData;
return PartialView("FeiertagTableView", viewModel);
}
}
Ainsi, EditFeiertag () est utilisé pour rendre toute votre page d'édition, et cette page appellera GetFeiertagTable() quand elle veut afficher votre vue partielle de manière asynchrone.
Maintenant, votre point de vue, permet de dire que vous avez quelque chose comme:
<div id="Container">
<div id="LeftPanel">
// ... Some menu items
</div>
<div id="RightPanel">
<a id="ReloadLink" href="#">Reload Table</a>
<div id="FeiertagTable>
<% Html.RenderPartial("FeiertagTable", Model.feiertagTableData); %>
</div>
</div>
</div>
Cela fonctionne bien et va charger votre table une fois. Mais vous voulez faire le rechargement de la table Feiertag si vous cliquez sur un certain élément (dans notre cas le #ReloadLink).
Ajouter ce qui suit à
partie de votre page:
<head>
<script src="../../Scripts/Jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#ReloadLink').click(function(e)
{
e.preventDefault(); // stop the links default behavior
$('#FeiertagTable').load('/Feiertag/GetFeiertagTable');
});
});
</script>
</head>
qui sera ensuite ajouter un événement sur l'événement, cliquez pour votre lien reload qui appellera une méthode charge jquery(). Cette méthode est une requête ajax get simplifiée et elle remplacera le contenu de la div sélectionnée (FeiertagTable), avec ce qui est retourné.
Notre action de contrôleur GetFeiertagTable() retournera la vue partielle, qui est ensuite insérée dans ce div. J'espère que cela vous met dans la bonne direction!