예제 #1
0
        public static HtmlString RenderJavaScript(JavaScriptLoadBehaviour behaviour, params string[] fileNames)
        {
            StringBuilder stringBuilder = new StringBuilder();
            HttpContext   context       = HttpContext.Current;

            string behaviourParam = behaviour == JavaScriptLoadBehaviour.Inline
                                        ? string.Empty
                                        : behaviour.ToString().ToLowerInvariant();

            // Minify on release.
            if (!context.IsDebuggingEnabled)
            {
                string fileContent = AsyncHelper.RunSync(() => JavaScriptHandler.ProcessJavascriptCrunchAsync(context, true, fileNames));
                string fileName    = $"{fileContent.ToMd5Fingerprint()}.js";
                return
                    (new HtmlString(
                         string.Format(
                             JavaScriptPhysicalFileTemplate,
                             AsyncHelper.RunSync(
                                 () => ResourceHelper.CreateResourcePhysicalFileAsync(fileName, fileContent)),
                             behaviourParam)));
            }

            // Render them separately for debug mode.
            foreach (string name in fileNames)
            {
                string currentName = name;
                string fileContent = AsyncHelper.RunSync(() => JavaScriptHandler.ProcessJavascriptCrunchAsync(context, false, currentName));
                string fileName    = $"{Path.GetFileNameWithoutExtension(name)}{fileContent.ToMd5Fingerprint()}.js";
                stringBuilder.AppendFormat(
                    JavaScriptPhysicalFileTemplate,
                    AsyncHelper.RunSync(() => ResourceHelper.CreateResourcePhysicalFileAsync(fileName, fileContent)),
                    behaviourParam);
                stringBuilder.AppendLine();
            }

            return(new HtmlString(stringBuilder.ToString()));
        }
예제 #2
0
        public static HtmlString RenderJavaScript(JavaScriptLoadBehaviour behaviour, params string[] fileNames)
        {
            StringBuilder stringBuilder = new StringBuilder();
            HttpContext context = HttpContext.Current;

            string behaviourParam = behaviour == JavaScriptLoadBehaviour.Inline
                                        ? string.Empty
                                        : behaviour.ToString().ToLowerInvariant();

            // Minify on release.
            if (!context.IsDebuggingEnabled)
            {
                string fileContent = AsyncHelper.RunSync(() => JavaScriptHandler.ProcessJavascriptCrunchAsync(context, true, fileNames));
                string fileName = $"{fileContent.ToMd5Fingerprint()}.js";
                return
                    new HtmlString(
                        string.Format(
                            JavaScriptPhysicalFileTemplate,
                            AsyncHelper.RunSync(
                                () => ResourceHelper.CreateResourcePhysicalFileAsync(fileName, fileContent)),
                            behaviourParam));
            }

            // Render them separately for debug mode.
            foreach (string name in fileNames)
            {
                string currentName = name;
                string fileContent = AsyncHelper.RunSync(() => JavaScriptHandler.ProcessJavascriptCrunchAsync(context, false, currentName));
                string fileName = $"{Path.GetFileNameWithoutExtension(name)}{fileContent.ToMd5Fingerprint()}.js";
                stringBuilder.AppendFormat(
                    JavaScriptPhysicalFileTemplate,
                    AsyncHelper.RunSync(() => ResourceHelper.CreateResourcePhysicalFileAsync(fileName, fileContent)),
                    behaviourParam);
                stringBuilder.AppendLine();
            }

            return new HtmlString(stringBuilder.ToString());
        }