In MVC, come posso restituire un risultato di stringa?


630

Nella mia chiamata AJAX, voglio restituire un valore di stringa alla pagina chiamante.

Dovrei usare ActionResulto semplicemente restituire una stringa?


4
controlla qui per restituire il messaggio di avviso bootstrap
shaijut

Risposte:


1075

Puoi semplicemente usare il ContentResultper restituire una stringa semplice:

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

ContentResultper impostazione predefinita restituisce a text/plaincome contentType . Questo è sovraccarico, quindi puoi anche fare:

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

Qual è il contentType se il tipo restituito è una stringa?
user1886419

7
Non so quanto fosse precisa questa risposta allora, ma attualmente lo ContentResultfa if (!String.IsNullOrEmpty(ContentType))prima di impostare HttpContext.Response.ContentType. Sto vedendo text/htmlcon il tuo primo esempio, o è quello predefinito ora o è un'ipotesi istruita da parte di HttpContext.
user247702

Come posso accedere a View?
Pradeep Kumar Das il

4
Piccola aggiunta: invece di aggiungere letteralmente "text / plain" come stringa, è possibile utilizzare una costante di .NET framework come MediaTypeNames.Text.Plaino MediaTypeNames.Text.Xml. Sebbene includa solo alcuni dei tipi MIME più utilizzati. ( docs.microsoft.com/en-us/dotnet/api/… )
Doku-so

Ho votato, anche se ho dovuto specificare il tipo mime come "text / plain" quando restituivo HTML come testo per il commento @Stijn.
Roberto,

113

Puoi anche restituire la stringa solo se sai che è l'unica cosa che il metodo potrà mai restituire. Per esempio:

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

10
Phil, è una "Best Practice", potresti spiegare la differenza tra la tua risposta e quella di @swilliam
David Perlman,

9
Non è possibile restituire una stringa da un metodo che restituisce un ActionResult, quindi in questo caso si restituisce Content ("") come spiegato da Swilliams. Se hai solo bisogno di restituire una stringa, allora il metodo restituirà una stringa, come ha spiegato Phil.
Arkiliknam,

3
Supponendo che la stessa azione abbia più returnistruzioni utilizzate per inviare una stringo JSONo in Viewbase a condizioni, è necessario utilizzare Contentper restituire la stringa.
DhruvJoshi,


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

0

A partire dal 2020, l'utilizzo ContentResultè ancora l'approccio giusto come proposto sopra , ma l'utilizzo è il seguente:

return new System.Web.Mvc.ContentResult
{
    Content = "Hi there! ☺",
    ContentType = "text/plain; charset=utf-8"
}

-1

esiste un modo 2 per restituire una stringa dal controller alla vista

primo

potresti restituire solo una stringa ma non sarai incluso nel file html, apparirà solo una stringa nel browser


secondo

potrebbe restituire una stringa come oggetto di Visualizza risultato

ecco gli esempi di codice per farlo

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à alla vista dei risultati e invierà il
codice s alla vista

<!--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 eseguo a eseguo http: // localhost: 60227 / Home / AutoProperty

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.