No MVC, como faço para retornar um resultado de string?


630

Na minha chamada AJAX, quero retornar um valor de string para a página de chamada.

Devo usar ActionResultou simplesmente retornar uma string?


4
verifique aqui para retornar inicialização mensagem de alerta
shaijut

Respostas:


1074

Você pode simplesmente usar o ContentResultpara retornar uma string simples:

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

ContentResultpor padrão, retorna a text/plaincomo seu contentType . Isso é sobrecarregável, então você também pode fazer:

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

Qual é o contentType se o seu tipo de retorno é uma string?
usar o seguinte comando

7
Não sei até que ponto essa resposta era precisa naquela época, mas atualmente ContentResulté if (!String.IsNullOrEmpty(ContentType))antes da configuração HttpContext.Response.ContentType. Estou vendo text/htmlcom seu primeiro exemplo, ou esse é o padrão agora ou é um palpite fundamentado pelo HttpContext.
user247702

Como posso acessar no modo de exibição?
Pradeep Kumar Das

4
Pequena adição: em vez de literalmente adicionar "text / plain" como uma string, você pode usar uma constante do .NET framework como MediaTypeNames.Text.Plainou MediaTypeNames.Text.Xml. Embora inclua apenas alguns dos tipos MIME mais usados. ( docs.microsoft.com/en-us/dotnet/api/… )
Doku-so

Até votado, embora eu precisasse especificar o tipo mime como "texto / sem formatação" ao retornar HTML como texto pelo comentário @Stijn.
Roberto

113

Você também pode retornar a string se souber que é a única coisa que o método retornará. Por exemplo:

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

10
Phil, isto é um "Best Practice", você poderia explicar a diferença entre a sua resposta e @swilliam 's
David Perlman

9
Você não pode retornar uma sequência de caracteres de um método que retorne um ActionResult; portanto, nesse caso, você retorna Content ("") conforme explicado por swilliams. Se você precisar retornar apenas uma string, o método retornará uma string, como Phil explicou.
precisa saber é o seguinte

3
Supondo que a mesma ação tenha várias returninstruções que são usadas para enviar uma stringou JSONou com Viewbase nas condições, devemos usar Contentpara retornar a string.
DhruvJoshi


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

0

A partir de 2020, o uso ContentResultainda é a abordagem correta, conforme proposto acima , mas o uso é o seguinte:

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

-1

existe 2 maneiras de retornar uma string do controller para a view

primeiro

você pode retornar apenas string, mas não será incluído no arquivo html, será jus string exibido no navegador


segundo

poderia retornar uma string como objeto de View Result

aqui estão os exemplos de código para fazer isso

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

    }
}

no arquivo view para executar a AutoProperty, ele o redirecionará para a visualização Result e enviará o
código s para visualização

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

Eu o executo em http: // localhost: 60227 / Home / AutoProperty

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.