Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC: How to covert an ActionResult to string?

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.

like image 541
burnt1ce Avatar asked Jan 03 '11 15:01

burnt1ce


2 Answers

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:

  1. ViewResult - Represents HTML and markup.
  2. EmptyResult - Represents no result.
  3. RedirectResult - Represents a redirection to a new URL.
  4. JsonResult - Represents a JavaScript Object Notation result that can be used in an AJAX application.
  5. JavaScriptResult - Represents a JavaScript script.
  6. ContentResult - Represents a text result.
  7. FileContentResult - Represents a downloadable file (with the binary content).
  8. FilePathResult - Represents a downloadable file (with a path).
  9. FileStreamResult - Represents a downloadable file (with a file stream).

All of these action results inherit from the base ActionResult class.

like image 69
Leniel Maccaferri Avatar answered Sep 20 '22 18:09

Leniel Maccaferri


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);
    }
like image 41
Andiih Avatar answered Sep 23 '22 18:09

Andiih