一、介绍
1.1. System.Web.Mvc.JavaScriptResult 在服务器端生成一段JavaScript 脚本,JavaScript 脚本以字符串形式通过当前的HttpResponse 响应给请求的客户端,在客端执行;
1.2. 操作方法(Action)调用JavaScript()方法,返回JavaScriptResult类型;
二、源代码分析
public class JavaScriptResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
//将脚本内容写入当前HttResponse
HttpResponseBase response = context.HttpContext.Response;
//将响应的媒体类型设置为"applicationlx-javascript"
response.ContentType = "application/x-javascript";
response.Write(this.Script);
}
public string Script { get; set; }
}
Script属性:表示响应的JavaScript 脚本;
ExecuteResult:用于响应JavaScript 脚本的方法(相关操作:1.将脚本内容写入当前HttResponse ; 2.将响应的媒体类型设置为"applicationlx-javascript,3.将脚本返回
给客户端;)
public abstract class Controller : ControllerBase, IActionFilter, IAuthorizationFilter, ..........
{
protected internal virtual JavaScriptResult JavaScript(string script);
}
抽象类Controller 中定义了一个JavaScript 方法,它根据指定的脚本字符串创建一个JavaScriptResult;
三、适用范围:
返回类型为J avaScriptResult 的Action 方法一般用于处理Ajax 请求。
四、其他:
ContentResult 也能实现与JavaScriptResult 一样的脚本响应功能, 大部分浏览器会将媒体类型"applicationlx-javascript"等同于"textljavascript" ,
所以在通过ContentResult 进行脚本响应时将媒体类型设置为"textljavascript" 可以起到相同的效果。
案例:
// 返回类型JavaScriptResult
public JavaScriptResult JavaScript()
{
return JavaScript("alert ( 'Hello World! ' ) i");
}
//返回类型ContentResult
public ContentResult JavaScript()
{
return Content("alert (' Hello World! ' ) i", "application/x-j avascript");
}