2010-01-11 6 views
2

Je suis en train de préparer une application que j'ai écrite dans ASP.Net MVC pour des choses légères d'Ajax-y. Fondamentalement, je veux que les utilisateurs puissent aller à différentes parties de la page sans recharger.Comment charger des vues indépendamment du site.master?

Pour ce faire, je veux être en mesure de recharger le corps de ma page.

Mon site maître est décomposé en div diviseur de corps et de pied. Je veux être capable d'utiliser quelque chose comme $ ("body"). Load (quel que soit le lien) pour rafraichir le corps, mais dans mon cas cela fait que le site soit rendu dans le corps.

Comment puis-je le faire avec succès?

EDIT: La page est composée de vues, pas de vues partielles. En théorie je pourrais aller convertir toutes mes pages en partiels mais je cherche un moyen de contourner cela si possible. Merci

Répondre

2

Vous pouvez obtenir vos contrôleurs de retourner des vues partielles, en utilisant JQuery pour faire une demande et mettre à jour un div avec le contenu de votre page:

JQuery:

function navigate(url){ 
    $.ajax({ 
    url: "/Home/Index", 
    cache: false, 
    success: function(html){ 
     $("#content").html(html); 
     } 
    }); 
} 

Controller:

public class HomeController : Controller 
{  
    public void Index() 
    { 
     return this.PartialView(); 
    } 
} 
+0

J'ai essayé ceci, cependant (résultat techniquement pire). Maintenant, il rend une deuxième copie de la page juste en dessous du premier. Y a-t-il quelque chose que j'oublie? Si je ne le mentionne pas, j'essaye de charger une nouvelle vue pas partialview – edude05

+0

@ edude05 J'ai changé $ ("# content"). Append (html) à $ ("# content"). Html (html). Cela devrait remplacer le contenu de votre div plutôt que d'ajouter le html – Charlie

+0

Merci Charlie, mais jusqu'à présent cela me donne le même résultat que (principal). Load (/ controller/action). J'ai besoin d'un moyen d'obtenir ASP pour retourner ma vue en tant que partielle, en ce moment, il retourne toujours la page entière à l'intérieur de la div. – edude05

0

Il y a un utile article sur BrightMix qui pourrait aider. Il rend fondamentalement un partiel à une chaîne, que vous pouvez ensuite retourner dans le cadre d'un ContentResult.

Questions connexes