在MVC中,如何返回字符串结果?


Answers:


1074

您可以使用ContentResult返回一个纯字符串:

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

ContentResult默认情况下返回a text/plain作为其contentType。这是可重载的,因此您还可以执行以下操作:

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

如果您的返回类型是字符串,则contentType是什么?
user1886419 2014年

7
我不知道这个答案准确程度当年,但目前ContentResult确实if (!String.IsNullOrEmpty(ContentType))设置之前HttpContext.Response.ContentType。我看到的text/html是您的第一个示例,这是现在的默认值,还是由引起的有根据的猜测HttpContext
user247702 2014年

如何访问View?
Pradeep Kumar Das

4
小增加:您可以使用.NET框架常量,例如MediaTypeNames.Text.Plain或,而不是从字面上添加“文本/纯文本”作为字符串MediaTypeNames.Text.Xml。尽管它仅包括一些最常用的MIME类型。docs.microsoft.com/en-us/dotnet/api/...
数独,所以

投票赞成,尽管在按@Stijn注释返回HTML文本时,确实需要将mime类型指定为“ text / plain”。
罗伯托

113

如果您知道这是该方法将返回的唯一内容,则也可以只返回字符串。例如:

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

10
菲尔,这是“最佳实践”,请您解释一下您的答案与@swilliam的区别
大卫·珀尔曼

9
您无法从返回ActionResult的方法中返回字符串,因此在这种情况下,您将按照swilliams的说明返回Content(“”)。如果您只需要返回一个字符串,那么您将使该方法返回一个字符串,如Phil所解释的。
Arkiliknam 2013年

3
假设同一动作有多个return用于根据条件发送stringJSONView的语句,那么我们必须使用它Content来返回字符串。
DhruvJoshi


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

0

截至2020年,使用ContentResult仍然是上述建议的正确方法,但用法如下:

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

-1

有两种方法可以将字符串从控制器返回到视图

第一

您只能返回字符串,但不会包含在html文件中,因为字符串将出现在浏览器中


第二

可以返回一个字符串作为“查看结果”的对象

这是执行此操作的代码示例

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

    }
}

在运行AutoProperty的视图文件中,它将重定向到Result视图,并发送s
代码以查看

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

我在http:// localhost:60227 / Home / AutoProperty上运行它

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.