In MVC, how do I return a string result?
asp.net MvcAjaxActionresultasp.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