在我的AJAX调用中,我想将一个字符串值返回到调用页面。
我应该使用ActionResult还是只返回一个字符串?
在我的AJAX调用中,我想将一个字符串值返回到调用页面。
我应该使用ActionResult还是只返回一个字符串?
当前回答
你可以只返回一个字符串,但一些API不喜欢它,因为响应类型不适合响应,
[Produces("text/plain")]
public string Temp() {
return Content("Hi there!");
}
这通常很管用
其他回答
你可以使用ContentResult返回一个普通字符串:
public ActionResult Temp() {
return Content("Hi there!");
}
ContentResult默认返回一个文本/纯文本作为它的contentType。这是可重载的,所以你还可以做:
return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");
你也可以只返回string如果你知道这是方法唯一返回的东西。例如:
public string MyActionName() {
return "Hi there!";
}
截至2020年,使用ContentResult仍然是上面提出的正确方法,但用法如下:
return new System.Web.Mvc.ContentResult
{
Content = "Hi there! ☺",
ContentType = "text/plain; charset=utf-8"
}
有两种方法从控制器返回一个字符串到视图:
第一个
您可以只返回字符串,但它不会包含在.cshtml文件中。它将只是一个出现在浏览器中的字符串。
第二个
你可以返回一个字符串作为View Result的Model对象。
下面是代码示例:
public class HomeController : Controller
{
// GET: Home
// this will return just a 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", s);
}
}
在运行AutoProperty的视图文件中,它会将您重定向到Result视图并发送s 视图代码
<!--this will make this file accept string as it's model-->
@model string
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Result</title>
</head>
<body>
<!--this will represent the string -->
@Model
</body>
</html>
我在http://localhost:60227/Home/AutoProperty上运行这个。
你可以只返回一个字符串,但一些API不喜欢它,因为响应类型不适合响应,
[Produces("text/plain")]
public string Temp() {
return Content("Hi there!");
}
这通常很管用