MVC avec Rasoir: comment actualiser partielle sur la page cliquez sur?
Ce projet utilise MVC3 et Rasoir. Nous avons une longue page, et les données sont à venir à partir d'un ordinateur central de la base de données via des services WCF, si nous voulons limiter ce qui est chargé en même temps. De base de données est chargé au chargement de la page, mais ensuite il y aura un peu de vrd pour des données supplémentaires. Nous utilisons @Html.Partielle(pagename) pour le rendu d'une page partielle dans le div. Cette partie du ViewModel sera initialement vide, donc pas de données s'affiche.
Nous voulons un utilisateur, cliquez sur pour accéder à une méthode de Contrôleur, d'appeler un autre service, et de remplir une section du ViewModel avec plus de données. Puis actualisez cette section de la page avec les données.
Comment puis-je actualiser HTML.Partielle(pagename) sur un clic de l'utilisateur? J'ai essayé un appel Ajax à l'URL appropriée, mais il n'a pas d'actualiser l'affichage.
Edit: voici mon code, en essayant d'utiliser les suggestions de Darin Dimitrov ci-dessous.
Mon ViewModel:
namespace Project.ViewModel
{
public class AllData
{
public string Id { get; set; }
public BasicData Basics { get; set; }
public ContactInfo ContactPoints { get; set; } //mainframe data
}
}
La page Principale:
@model Project.ViewModel.AllData
<script type="text/javascript">
$(function () {
$('#loadFromMainFrame').click(function (e) {
var url = $(this).data(url);
$('#MainframeContents').load(url);
});
});
</script>
<div id="basics">
<div>
@Html.DisplayFor(model => model.Basics.FirstName)
</div>
<div>
@Html.DisplayFor(model => model.Basics.LastName)
</div>
</div>
<button id="loadFromMainFrame" data-url="@Url.Action("GetFromMainFrame")">Load from mainframe</button>
<div id="MainframeContents">
<p>Contact Info will go here</p>
</div>
Le Contrôleur:
public ActionResult Details(string id)
{
BasicData basicdata = new BasicData();
basicdata.FirstName = "Arya";
basicdata.LastName = "Stark";
AllData allData = new AllData();
allData.Basics = basicdata;
return View(allData);
}
public ActionResult GetFromMainframe()
{
AllData allData = new AllData();
allData.ContactPoints = …getting data from mainframe
return PartialView("ContactsSection", allData);
}
La page de Détails qui rend. En cliquant sur le bouton exécute le script, mais le contrôleur n'est pas atteint. Ce que je fais mal?
Je vais aussi poster quelques autres tentatives que j'ai fait...
Qui était-il! Merci beaucoup!!
OriginalL'auteur DZx | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
C'est exactement ce que vous devriez utiliser. Supposons que vous avez le point de vue suivant:
et puis vous pouvez écrire le script suivant qui va envoyer une requête AJAX ti le contrôleur correspondant action lorsque le bouton est cliqué et charger le contenu dans la div:
et maintenant tout ce qui reste est bien sûr d'avoir la manette correspondante de l'action qui va charger les données de l'ordinateur central et de rendre une vue partielle:
Ai eu de travail en ajoutant des guillemets, comme Francisco l'a souligné ci-dessus. Merci beaucoup, beaucoup!
Vous avez ajouté les guillemets où? Dans cette réponse, d'où l'url?
OriginalL'auteur Darin Dimitrov