burnt1ce
burnt1ce

Reputation: 14897

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.

Upvotes: 8

Views: 11982

Answers (3)

Matt Greer
Matt Greer

Reputation: 62037

Are you sure JsonResult isn't what you want? If you call the Json(object jsonObject) method that is defined in Controller, it will serialize jsonObject into JSON and return an appropriate response (with all the headers correctly set and all that). Generally JSON requests need to be POST, but you can configure it to allow GET too.

Upvotes: 1

Andiih
Andiih

Reputation: 12413

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);
    }

Upvotes: 1

Leniel Maccaferri
Leniel Maccaferri

Reputation: 102418

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.

Upvotes: 6

Related Questions