2010-02-02 5 views
2

i ont un contrôleur de module qui retourne (rend) une page de vue (.aspx) dans la page main.aspxretourne contrôleur mvc s données html 'au lieu de vue

mais maintenant je veux le contrôleur pour revenir l'ensemble le contenu de la page .aspx à la fonction javascript où ce contrôleur a été appelé

pls aider

ma fonction d'appel dans main.aspx

$.get('/Module/Select/', 
     { TemplateName: TemplateName }, function(result) { 
      alert(result); 
}); 

mon contrôle LER

public ActionResult Select(string TemplateName) 
    { 

return View(TemplateName);   

    } 

il doit retourner le contenu de « TemplateName » à la fonction (résultat) {....}

+0

Pouvez-vous nous montrer votre code à la façon dont vous avez essayé cela? Vous pouvez retourner la direction du contenu au client, mais il pourrait y avoir une meilleure solution en utilisant des vues partielles et des formulaires ajax. – Odd

+0

Votre routage est-il vraiment configuré pour gérer cela? L'URL du jQuery POST semble un peu étrange. Vous pouvez utiliser 'Html.ActionLink()' pour générer des URL pour les méthodes d'action, car le routage sera automatiquement pris en compte. En outre, « les retours (rend) » est un non sequitur, comme « une page vue ... dans la page main.aspx ». Vous voudrez peut-être lire sur vos bases ASP.NET MVC. :) – bzlm

Répondre

2

Vous devez faire un asynchrone (ajax) appelle à l'action du contrôleur et de passer l'objet comme JSON. Dans la fonction de rappel de succès, il suffit d'évaluer le résultat et vous obtiendrez votre objet.

$("#yourButtonId").click(function(ev) { 
    ev.preventDefault(); 

    $.get('/Module/Select/', 
    { TemplateName: TemplateName }, function(result) { 
     var myObject = eval('(' + result + ')'); 
     alert(myObject); 
}); 
}); 

Dans votre contrôleur, vérifiez si la requête est une requête ajax et renvoyez l'objet au format JSON.

public ActionResult Select(string TemplateName) 
{ 
    if (Request.IsAjaxRequest()) 
    { 
     return Json(TemplateName); 
    } 
    return View(TemplateName);   
} 

De cette façon, votre action fonctionnera avec les requêtes ajax et non-ajax.

0

Qu'est-ce que vous obtenez de retour de l'appel?

$.get('/Module/Select/', 
    { TemplateName: TemplateName }, function(result) { 
     alert(result); }); 
0

Vous pouvez également utiliser:

$.load('/Module/Select/', 
    { TemplateName: TemplateName },function(result) { 
     alert(result); }); 
     }); 

espère que c'est ce que vous cherchez:)

1

je besoin de faire une des choses manifestations analogues. J'ai défini par des pages, où j'ai juste besoin de contenu, en tant que vues partielles.

Vous Jquery peut alors GET ou POST à ​​une action de contrôleur qui peut revenir comme suit:

return PartialView("ViewName", model); 

Cela peut aussi être fortement typé à un modèle.

Le résultat var dans votre fonction de gestion JQuery contiendra alors seulement le HMTL dont vous avez besoin.

Questions connexes