In MVC, how do I return a string result?

asp.net MvcAjaxActionresult

asp.net Mvc Problem Overview


In my AJAX call, I want to return a string value back to the calling page.

Should I use ActionResult or just return a string?

asp.net Mvc Solutions


Solution 1 - asp.net Mvc

You can just use the [ContentResult][1] to return a plain string:

public ActionResult Temp() {
    return Content("Hi there!");
}

[ContentResult][1] by default returns a text/plain as its [contentType][2]. This is overloadable so you can also do:

return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");

[1]: https://msdn.microsoft.com/en-us/library/system.web.mvc.contentresult.aspx "MSDN documentation" [2]: https://en.wikipedia.org/wiki/Media_type "Wikipedia"

Solution 2 - asp.net Mvc

You can also just return string if you know that's the only thing the method will ever return. For example:

public string MyActionName() {
  return "Hi there!";
}

Solution 3 - asp.net Mvc

public ActionResult GetAjaxValue()
{
   return Content("string value");
}

Solution 4 - asp.net Mvc

As of 2020, using ContentResult is still the right approach as proposed above, but the usage is as follows:

return new System.Web.Mvc.ContentResult
{
    Content = "Hi there! ☺",
    ContentType = "text/plain; charset=utf-8"
}

Solution 5 - asp.net Mvc

There Are 2 ways to return a string from the controller to the view:

First

> You could return only the string, but it will not be included in your .cshtml file. it will be just a string appearing in your browser.


Second > You could return a string as the Model object of View Result.

Here is the code sample to do this:

public class HomeController : Controller
{
    // GET: Home
    // this will return just a string, not html
    public string index()
    {
        return "URL to show";
    }

    public ViewResult AutoProperty()
    {   
        string s = "this is a string ";
        // name of view , object you will pass
        return View("Result", s);

    }
}

In the view file to run AutoProperty, It will redirect you to the Result view and will send s
code to the view

<!--this will make this file accept string as it's model-->
@model string

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Result</title>
</head>
<body>
    <!--this will represent the string -->
    @Model
</body>
</html>

> I run this at http://localhost:60227/Home/AutoProperty.

Solution 6 - asp.net Mvc

public JsonResult GetAjaxValue() 
{
  return Json("string value", JsonRequetBehaviour.Allowget); 
}

Solution 7 - asp.net Mvc

you can just return a string but some API's do not like it as the response type is not fitting the response,

[Produces("text/plain")]
public string Temp() {
    return Content("Hi there!");
}

this usually does the trick

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser67033View Question on Stackoverflow
Solution 1 - asp.net MvcswilliamsView Answer on Stackoverflow
Solution 2 - asp.net MvcHaackedView Answer on Stackoverflow
Solution 3 - asp.net MvcMadhav Singh RaghavView Answer on Stackoverflow
Solution 4 - asp.net MvcJack MillerView Answer on Stackoverflow
Solution 5 - asp.net Mvcahmed khattabView Answer on Stackoverflow
Solution 6 - asp.net MvcKhursheedView Answer on Stackoverflow
Solution 7 - asp.net MvcWalter VerhoevenView Answer on Stackoverflow