2010-05-19 6 views
0

J'ai besoin d'envoyer d'autres données, idéalement enveloppées dans un objet JSON, au client. En plus de cela, j'ai besoin d'envoyer une vue partielle. Maintenant, je ne peux penser à deux façons:ASP.Net MVC - Nécessité d'envoyer d'autres données avec la vue partielle

  1. Envoyer un objet JSON, puis faire un autre appel pour charger le contenu de la vue partielle dans div.
  2. Envoyer du code HTML pour une vue partielle en tant que propriété de l'objet JSON, puis le charger dans div.

Comment ferais-je la deuxième option? Y at-il une commande pour rendre les vues partielles dans une chaîne? Ou la première approche est-elle meilleure?

Cheers, Damien

+0

voir http://stackoverflow.com/questions/1471066/partial-views-vs-json-or-both/5502426#5502426 –

Répondre

1

Y at-il une commande pour rendre des vues partielles dans une chaîne

aucun moyen direct que je connais. Mais c'est possible avec quelques moqueries. J'utilise Moq ici, mais n'importe quel cadre moqueur ferait l'affaire.

var writer = new StringWriter(); 
var context = new Mock<HttpContextBase>(); 
var response = new Mock<HttpResponseBase>(); 
context.Setup(ctx => ctx.Response).Returns(response.Object); 
response.Setup(res => res.Output).Returns(writer); 

var oldContext = ControllerContext.HttpContext; 
ControllerContext.HttpContext = context.Object; 

var partialView = PartialView("TagCloud", tags); 
partialView.ExecuteResult(ControllerContext); 
var resultHtml = writer.ToString(); 

ControllerContext.HttpContext = oldContext; 
Questions connexes