Reputation: 14057
I need to send some other data, ideally wrapped in a JSON object, down to the client. As well as that however I need to send a Partial view. Now I can only think of two ways:
How would I go about doing the second option? Is there a command to render partial views into a string? Or is the first approach better?
Cheers, Damien
Upvotes: 0
Views: 530
Reputation: 50395
Is there a command to render partial views into a string
No direct way as I know of. But it's possible with some mocking. I use Moq here, but any mocking framework would do.
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;
Upvotes: 1