作者:ERIK又 | 2023-08-30 16:11
在我的AJAX调用中,我想将一个字符串值返回给调用页面.
我应该使用ActionResult
还是只返回一个字符串?
1> swilliams..:
你可以使用它ContentResult
来返回一个纯字符串:
public ActionResult Temp() {
return Content("Hi there!");
}
ContentResult
默认情况下,返回a text/plain
作为其contentType.这是多重的,所以你也可以这样做:
return Content("This is poorly formatted xml.", "text/xml");
我不知道这个答案当时有多准确,但是当前`ContentResult`在设置`HttpContext.Response.ContentType`之前做了`if(!String.IsNullOrEmpty(ContentType))`.我用你的第一个例子看到`text/html`,或者现在是默认的,或者是`HttpContext`的有根据的猜测.
小小的补充:您可以使用.NET框架常量,例如`MediaTypeNames.Text.Plain`或`MediaTypeNames.Text.Xml`,而不是逐字地添加"text/plain".虽然它只包含一些最常用的MIME类型._(https://docs.microsoft.com/en-us/dotnet/api/system.net.mime.mediatypenames)_
2> Haacked..:
如果您知道方法将返回的唯一内容,您也可以返回字符串.例如:
public string MyActionName() {
return "Hi there!";
}
菲尔,这是一个"最佳实践",请你解释你的答案和@swilliam之间的区别
你不能从返回ActionResult的方法返回一个字符串,所以在这种情况下你返回内容("")作为swilliams解释.如果你只需要返回一个字符串,那么你就可以让方法返回一个字符串,就像菲尔解释的那样.
假设同一个动作有多个`return`语句,用于根据条件发送`string`或`JSON`或`View`,那么我们必须使用`Content`来返回字符串.
3> Madhav Singh..:
public ActionResult GetAjaxValue()
{
return Content("string value");
}
在回答期间更好地解释更多