2010-08-22 6 views
1

Voici le scénarioASP.NET MVC - paramètre Retour JavascriptResult et JSON

Dans MVC, il est facile de retourner un Javascript à exécuter sur le client

public ActionResult DoSomething() 
{  
    return JavaScript("alert('Hello world!');");    
} 

Sur le client, je un Javascript qui prend un objet JSON en tant que paramètre

Quelque chose de semblable à ceci:

function open(options) {...} 

Je voulais appeler cette fonction de mon action qui passe un objet JSON généré sur le serveur j'ai donc écrit ce

public ActionResult DoSomething() 
{ 
     var viewData = new {...}; 
     return JavaScript("open('" + Json(viewData) + "')");   
} 

Cependant, quand nous appelle ma fonction Javascript, je ne reçois pas de données, mais ceci: open('System.Web.Mvc.JsonResult')

J'apprécierai toute aide à ce sujet

Merci

+0

pouvez-vous me montrer s'il vous plaît tout votre code javascript ?? S'il vous plaît! –

Répondre

2

La méthode Json renvoie une JsonResult. Pas une chaîne JSON. Vous pouvez utiliser le JavaScriptSerializer

public ActionResult DoSomething() 
{ 
     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     var viewData = new {...}; 
     return JavaScript("open('" + serializer.Serialize(viewData) + "')");   
} 

Selon la façon dont votre méthode côté client open fonctionne, vous devrez peut-être envoyer les données JSON comme un objet JSON au lieu d'une chaîne en supprimant simplement le «autour de l'argument de la méthode.

+0

J'ai enlevé le 'autour de l'argument de la méthode et cela a fonctionné efficacement. Merci beaucoup pour votre aide – user385411