I would like to take an existing action method, render its return value to a string and ship it as a JSON for a response to an AJAX request.
To do this, I need to render an ActionResult to a string. How do i do this?
We have the opposite where we can convert a string to an ActionResult by using this.Content().
Update
The existing and 1st action method returns a type ActionResult but it really returns a ViewResult to respond to HTTP post request. I have a 2nd action method (my facade) that returns a JsonResult that responds to AJAX requests. I want this 2nd action method to use the 1st action method to render the HTML.
In the grand scheme of things, I want an ActionResult (generated from an action method) retrievable not only by a standard HTTP post, but also by an AJAX request via a facade action method (the 2nd action method). This way, I, as a developer, have the choice of using an HTTP Post or AJAX to retrieve the rendering of a page.
Sorry i tried to make this update as short as possible. Thanks.
Are you looking for number 4 or 6 bellow?
Text extracted from here:
Understanding Action Results
A controller action returns something called an action result. An action result is what a controller action returns in response to a browser request.
The ASP.NET MVC framework supports several types of action results including:
All of these action results inherit from the base ActionResult class.
Return it as a ContentResult rather than an ActionResult
I use something like
public ContentResult Place(string person, string seat)
{
string jsonString = null;
try
{
jsonString = AllocationLogic.PerformAllocation(person, seat);
}
catch {
jsonString = AllocationLogic.RaiseError(timeout);
}
return Content(jsonString);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With