2009-02-16 11 views
539

En mi llamada AJAX, deseo devolver un valor de cadena a la página de llamada.En MVC, ¿cómo devuelvo un resultado de cadena?

¿Debo usar ActionResult o simplemente devolver una cadena?

+2

de verificación [aquí] (http://stackoverflow.com/a/30323853/2218697) para ** devolver el mensaje de alerta de arranque ** – stom

Respuesta

918

sólo puede utilizar el ContentResult para devolver una cadena sencilla:

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

ContentResult por defecto devuelve un text/plain como su contentType. Esta es sobrecargable por lo que también puede hacer:

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

Ah gracias, nunca lo supe :). – Morph

+1

¡Eso es bueno! Yo tampoco sabía sobre esto. – Chaddeus

+0

¡Todos los días aprendes algo nuevo! –

104

También se puede simplemente volver cadena si se sabe que es lo único que el método será nunca volver. Por ejemplo:

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

Phil, ¿es esta una "Mejor práctica", podría explicar la diferencia entre su respuesta y @swilliam –

+9

No puede devolver una cadena de un método que devuelve un resultado de acción, por lo que en este caso devuelve contenido ("") como lo explicó swilliams. Si solo necesitas devolver una cadena, entonces deberías hacer que el método devuelva una cadena, como explicó Phil. – Arkiliknam

+2

Suponiendo que la misma acción tiene múltiples instrucciones 'return' que se utilizan para enviar' string' o 'JSON' o' View' en función de las condiciones, debemos usar 'Content' para devolver la cadena. – DhruvJoshi

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

mejor para explicar más durante la respuesta – Mostafiz

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

hay 2 vías para devolver una cadena de controlador a la vista

primera

que podría devolver sólo cadena, pero no será incluido en el archivo html aparecerá una cadena jus en el navegador


segundo

podría devolver una cadena como objeto de vista de resultados

aquí es 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 expediente a fin de ejecutar AutoProperty lo redireccionará a Resultado vista y enviará s
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 funciono en http://localhost:60227/Home/AutoProperty

Cuestiones relacionadas