示例#1
0
        public void Render(TextWriter writer)
        {
            if (_references != null)
            {
                foreach (ScriptReference scriptReference in _references)
                {
                    if ((_scriptInliner != null) && _scriptInliner.CanInlineScript(scriptReference))
                    {
                        string scriptContent = _scriptInliner.GetScript(scriptReference);

                        if (scriptContent == null)
                        {
                            RenderScriptTag(writer, /* path */ null, scriptReference.Name, scriptReference.Dependencies,
                                            scriptReference.Mode, "load", null);
                        }
                        else
                        {
                            string version = scriptReference.Version.ToString(CultureInfo.InvariantCulture);
                            RenderScriptTag(writer, /* path */ null, scriptReference.Name, scriptReference.Dependencies,
                                            scriptReference.Mode, version, scriptContent);
                        }
                    }
                    else
                    {
                        RenderScriptTag(writer, scriptReference.Path, scriptReference.Name, scriptReference.Dependencies,
                                        scriptReference.Mode, null, null);
                    }
                }
            }

            if (_scriptBlocks != null)
            {
                foreach (ScriptBlock scriptBlock in _scriptBlocks)
                {
                    RenderScriptTag(writer, /* path */ null, /* name */ null, scriptBlock.Dependencies,
                                    ScriptMode.Startup, /* storage */ null, scriptBlock.Code);
                }
            }

            // Write out the script loader reference.
            writer.Write("<script type=\"text/javascript\" src=\"");
            writer.Write(_loaderScript);
            writer.WriteLine("\"></script>");

            if (_scriptlets != null)
            {
                writer.WriteLine("<script type=\"text/javascript\">");
                writer.WriteLine("ss.ready(function() {");
                foreach (Scriptlet scriptlet in _scriptlets)
                {
                    writer.Write(scriptlet.ScriptletType);
                    writer.Write("Scriptlet(");
                    if (scriptlet.Parameters != null)
                    {
                        JsonWriter jsonWriter = new JsonWriter(writer, /* minimizeWhitespace */ true);
                        jsonWriter.WriteValue(scriptlet.Parameters);
                    }
                    writer.WriteLine(");");
                }
                writer.WriteLine("});");
                writer.WriteLine("</script>");
            }
        }