2009-02-16 7 views
539

In meinem AJAX-Aufruf möchte ich einen Zeichenfolgenwert an die aufrufende Seite zurückgeben.In MVC, wie gebe ich ein String-Ergebnis zurück?

Sollte ich ActionResult verwenden oder nur eine Zeichenfolge zurückgeben?

+2

Prüfung durchführen können [hier] (http://stackoverflow.com/a/30323853/2218697) to ** Bootstrap Alarm Nachricht ** – stom

Antwort

918

Sie können nur die ContentResult verwenden einen einfachen String zurück:

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

ContentResult standardmäßig eine text/plain als contentType zurückgibt. Dies ist überladbaren, so dass Sie auch tun können:

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

Ah danke, wusste nie darüber :). – Morph

+1

Das ist schön! Ich wusste auch nichts davon. – Chaddeus

+0

Jeden Tag lernen Sie etwas Neues! –

104

Sie können auch nur String zurück, wenn Sie wissen, das ist das einzige, was das Verfahren jemals zurückkehren wird. Zum Beispiel:

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

Phil, ist dies ein "Best Practice", können Sie bitte den Unterschied zwischen Ihrer Antwort und @swilliams –

+9

erklären Sie können keine Zeichenfolge von einer Methode zurückgeben, die ein ActionResult zurückgibt, also in diesem Fall geben Sie Inhalt zurück ("") wie Swilliams erklärte. Wenn Sie nur eine Zeichenfolge zurückgeben müssen, dann würde die Methode eine Zeichenfolge zurückgeben, wie Phil erklärte. – Arkiliknam

+2

Unter der Annahme, dass dieselbe Aktion mehrere 'return'-Anweisungen hat, die verwendet werden, um entweder 'string' oder' JSON' oder 'View' basierend auf Bedingungen zu senden, müssen wir' Content' verwenden, um die Zeichenfolge zurückzugeben. – DhruvJoshi

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

besser, um mehr während der Antwort zu erklären – Mostafiz

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

gibt es 2 Wege einen String von der Steuerung zu der Ansicht

ersten

Sie nur String zurückgeben konnten aber nicht sein zurück in html Datei enthalten wird es Jus Zeichenfolge im Browser erscheinen


an zweiter Stelle

eine Zeichenfolge als Objekt der Ansicht Ergebnis zurückkehren konnte

hier ist die Code-Beispiele Diese Datei

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

    } 
} 

im Blick zu tun AutoProperty laufen wird es Sie umleiten zu Ergebnis Ansicht und s
Code

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

ich es bei http://localhost:60227/Home/AutoProperty