Remplir le dialogue modal de jquery avec la vue partielle asynchrone de MVC, et montrer au centre de l'écran
Je suis en train d'utiliser la boîte de dialogue modale jquery pour afficher une vue partielle asynchrone lorsque l'on clique sur quelque chose. Assez simple, et il ya des tas de questions sur ce sujet, mais je n'arrive pas à le faire fonctionner. J'ai eu la modale de l'affichage, mais pas dans le centre. Et je l'ai lu, c'est parce que je suis le remplissage de la div après la boîte de dialogue est affichée, par conséquent, la position est relative à la div vide, pas l'peuplée - et je l'ai prouvé à être le cas en montrant quelques contenu statique, et les centres d'amende.
Alors maintenant, je vais essayer d'obtenir la vue partielle d'abord, puis afficher la boîte de dialogue dans le load() de rappel, mais cela ne fonctionne pas. J'obtiens une erreur sur le dialogue " ("ouvert")' ligne, car la boîte de dialogue méthode n'est pas défini. Voici mon code:
(P. S. je suis nouveau sur javascript/jQuery, donc désolé si c'est assez évident)
<script type="text/javascript">
$(function () {
$('#my-dialog').dialog({
autoOpen: false,
width: 400,
resizable: false,
modal: true
});
});
$(document).ready(function() {
$('#show-modal').click(function() {
$('#my-dialog').load("@Url.Action("MyActionOnController")", function() {
$('#my-dialog').dialog('open');
});
return false;
});
});
</script>
<div id="my-dialog"></div>
<a href="#" id="show-modal">Click Me </a>
Aide appréciée!
Modifier j'ai modifié le code pour correspondre à Darin et téléchargé une image montrant ce que le problème semble être?
source d'informationauteur David Masters
Vous devez vous connecter pour publier un commentaire.
Votre code a l'air bien et ça fonctionnait quand je l'ai testé. Voici mon test complet de l'affaire:
Contrôleur:
Vue (~/Views/Home/Index.cshtml):
OK, j'ai trouvé le problème:
La vue partielle, j'étais de retour pour mon boîte de dialogue modale a été créée en utilisant l'architecture MVC échafaudage pour une modification en vue, ce qui inclut par défaut certains scripts jQuery qui étaient déjà inclus dans la mise en page, qui doit avoir été à l'origine du problème.
Tout fonctionne parfaitement maintenant!
Possible problème de portée?
Vous êtes effectivement déclarer deux
document.ready
fonctions. Il suffit de mettre tout le code à l'intérieur: