En mi llamada AJAX, quiero devolver un valor de cadena a la página de llamada.
¿Debo usar ActionResult
o simplemente devolver una cadena?
En mi llamada AJAX, quiero devolver un valor de cadena a la página de llamada.
¿Debo usar ActionResult
o simplemente devolver una cadena?
Respuestas:
Puede usar el ContentResult
para devolver una cadena simple:
public ActionResult Temp() {
return Content("Hi there!");
}
ContentResult
por defecto devuelve a text/plain
como su contentType . Esto se puede cargar, por lo que también puede hacer:
return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");
ContentResult
hace if (!String.IsNullOrEmpty(ContentType))
antes de configurar HttpContext.Response.ContentType
. Estoy viendo text/html
con su primer ejemplo, o ese es el valor predeterminado ahora o es una suposición educada por el HttpContext
.
MediaTypeNames.Text.Plain
o MediaTypeNames.Text.Xml
. Aunque solo incluye algunos de los tipos MIME más utilizados. ( docs.microsoft.com/en-us/dotnet/api/… )
También puede simplemente devolver una cadena si sabe que eso es lo único que devolverá el método. Por ejemplo:
public string MyActionName() {
return "Hi there!";
}
return
declaraciones que se utilizan para enviar cualquiera string
o JSON
o View
basado en las condiciones entonces debemos utilizar Content
para volver cadena.
public ActionResult GetAjaxValue()
{
return Content("string value");
}
A partir de 2020, el uso ContentResult
sigue siendo el enfoque correcto como se propuso anteriormente , pero el uso es el siguiente:
return new System.Web.Mvc.ContentResult
{
Content = "Hi there! ☺",
ContentType = "text/plain; charset=utf-8"
}
hay 2 formas de devolver una cadena del controlador a la vista
primero
podría devolver solo una cadena pero no se incluirá en el archivo html, solo aparecerá una cadena en el navegador
segundo
podría devolver una cadena como objeto de Ver resultado
aquí están los ejemplos de código para hacer esto
public class HomeController : Controller
{
// GET: Home
// this will mreturn just 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", (object)s);
}
}
en el archivo de vista para ejecutar AutoProperty , lo redireccionará a la vista de resultados y le enviará un
código para ver
<!--this to make this file accept string as model-->
@model string
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Result</title>
</head>
<body>
<!--this is for represent the string -->
@Model
</body>
</html>
lo ejecuto en http: // localhost: 60227 / Home / AutoProperty