Language: C#
Javascript file actionresult
public class JavascriptFileResult : ViewResult { private readonly bool shouldCompress; private readonly int cacheDuration; public JavascriptFileResult() : this(false) { } public JavascriptFileResult(bool shouldCompress) : this(shouldCompress, 0) { } public JavascriptFileResult(bool shouldCompress, int cacheDuration) { this.shouldCompress = shouldCompress; this.cacheDuration = cacheDuration; } public int CacheDuration { get { return cacheDuration; } } public override void ExecuteResult(ControllerContext context) { var textWriter = new StringWriter(); var viewResult = GetViewResult(textWriter); viewResult.ExecuteResult(context); var result = textWriter.ToString() .RegexReplace("<script.*?>", string.Empty) .Replace("</script>", string.Empty); #if RELEASE context.HttpContext.Response.CacheControl = "Public"; context.HttpContext.Response.Expires = _cacheDuration; #endif context.HttpContext.Response.ContentType = "text/javascript"; context.HttpContext.Response.Write((shouldCompress ? JavaScriptCompressor.Compress(result) : result)); } private ExtendedViewResult GetViewResult(TextWriter textWriter) { return new ExtendedViewResult(textWriter) { MasterName = MasterName, TempData = TempData, View = View, ViewData = ViewData, ViewEngineCollection = ViewEngineCollection, ViewName = ViewName }; } private class ExtendedViewResult : ViewResult { private readonly TextWriter textWriter; public ExtendedViewResult(TextWriter textWriter) { this.textWriter = textWriter; } public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } if (String.IsNullOrEmpty(ViewName)) { ViewName = context.RouteData.GetRequiredString("action"); } ViewEngineResult result = null; if (View == null) { result = FindView(context); View = result.View; } var viewContext = new ViewContext(context, View, ViewData, TempData, textWriter); View.Render(viewContext, textWriter); if (result != null) { result.ViewEngine.ReleaseView(context, View); } } } }
Report Abuse
Subscribe
Discuss
News
About
New Snippet
Recent Snippets
My Snippets
Favorites
Web Code
Search
Copy
Line#