2010-12-07 3 views
1

J'essaie d'utiliser jQuery pour charger une vue partielle. Ca se passe bien au premier chargement de la page. Mais alors je dois être capable de recharger la vue partielle quand un bouton de sauvegarde est pressé. Je reçois un rechargement, mais cette fois le PartialView est tout ce que je récupère. C'est à dire. Je n'obtiens pas le PartialView chargé comme une partie de la page principale, mais plutôt comme une page de son propre. Qu'est-ce que je fais mal?Recharger PartialView à partir de jQuery dans l'application ASP.NET MVC 2?

Voici les parties pertinentes de la jQuery dans la vue:

 $.get('<%=Url.Action("GetTasks", "Timesheet", new {id = DateTime.Today.ToShortDateString() }) %>', function (data) { 
      $('#tasksDiv').html(data); 
     }); //This part works fine on first load of the page 

     $('#savenewtask').click(function (event) { 
      event.preventDefault(); 
      $.get('<%=Url.Action("GetTasks", "Timesheet", new {id = DateTime.Today.ToShortDateString() }) %>', function (data) { 
       $('#tasksDiv').html(data); 
      }); 
     }); //This only loads the PartialView, but not as part of the main page... 

Le bouton et la div à charger dans:

<p> 
     <input type="button" value="Spara" id="savenewtask" /> 
    </p> 

<div id="tasksDiv"> 
</div> 

MISE À JOUR:

En fait, il a travaillé, je Je viens de confondre les deux champs d'entrée que j'ai sur la page. Mais je vais reformuler la question en une question simple: est-ce la meilleure façon de faire ce genre de chose avec les vues partielles, ou devrais-je faire autrement? (C'est-à-dire que j'essayais juste de trouver un moyen de réaliser ce que je voulais sans savoir si c'était la meilleure façon de le faire).

+2

Est-ce que "#tasksDiv" apparaît plusieurs fois sur la page? Je veux vous aider à acheter, vous n'acceptez pas les réponses ... – hunter

+0

Voir la mise à jour ci-dessus. Vraiment? Je pense que j'essaie d'accepter des réponses autant que possible. Bien sûr, parfois, je n'ai pas de réponses utiles à certaines questions, et il n'y a pas grand chose à faire, n'est-ce pas? – Anders

Répondre

0

J'ai généralement utilisé la méthode load, qui définit innerHtml.

var url = '<%=Url.Action("GetTasks", "Timesheet", new {id = DateTime.Today.ToShortDateString() }) %>' 
$("#tasksDiv").load(url); 
+0

Désolé, mon erreur, j'avais confondu les deux champs de saisie. Cela fonctionne vraiment bien. Cependant, je vais reformuler ma question et accepter la réponse à la place. Voir mise à jour ci-dessus. – Anders

+0

Je choisis toujours le chemin de moindre résistance '.load()'. Il n'y a pas besoin d'un délégué/rappel et la syntaxe lit plus clairement. "Prenez cette div, et chargez le contenu de cette URL en elle." Il n'y a rien de mal à faire un get + callback; Je l'ai juste trouvé pour exiger plus de code; cependant, il peut y avoir des cas où il est nécessaire sur un simple appel '.load()', par exemple si vous voulez traiter la valeur de retour avant de l'afficher ... – Nate

Questions connexes