2009-02-16 9 views
539

Nella mia chiamata AJAX, voglio restituire un valore stringa alla pagina chiamante.In MVC, come posso restituire un risultato stringa?

Devo usare ActionResult o semplicemente restituire una stringa?

+2

di controllo [qui] (http://stackoverflow.com/a/30323853/2218697) al ** messaggio di avviso bootstrap di ritorno ** – stom

risposta

918

si può semplicemente utilizzare il ContentResult per restituire una stringa semplice:

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

ContentResult di default restituisce un text/plain come contentType. Questo è sovraccaricabile modo da poter fare:

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

Ah, grazie, mai saputo di questo :). – Morph

+1

Che bello! Anche io non lo sapevo. – Chaddeus

+0

Ogni giorno impari qualcosa di nuovo! –

104

È anche possibile tornare stringa se si sa che è l'unica cosa il metodo potrà mai tornare. Per esempio:

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

Phil, è una "Best Practice", potresti spiegare la differenza tra la tua risposta e la risposta di @swilliam –

+9

Non puoi restituire una stringa da un metodo che restituisce un ActionResult, quindi in questo caso restituisci Contenuto ("") come spiegato da swilliams. Se hai solo bisogno di restituire una stringa, il metodo restituirà una stringa, come spiegato da Phil. – Arkiliknam

+2

Supponendo che la stessa azione abbia più istruzioni 'return' che sono usate per inviare' string' o 'JSON' o' View' in base alle condizioni, dobbiamo usare 'Content' per restituire una stringa. – DhruvJoshi

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

meglio per spiegare di più durante la risposta – Mostafiz

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

c'è 2 modo per restituire una stringa dal regolatore alla vista

primo

si poteva solo tornare stringa, ma non sarà incluso nel file html apparirà nel browser


seconda

potrebbe restituire una stringa come oggetto di visualizzazione dei risultati

ecco gli esempi di codice per fare questo

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

    } 
} 

nel file di visualizzazione per eseguire AutoProperty ti reindirizzerà a Risultato vista e invierà s codice
per visualizzare

<!--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> 

l'eseguo in http://localhost:60227/Home/AutoProperty

Problemi correlati