using System.Web; using System.Web.Mvc; namespace ChadSoft.Web.Mvc { public static class ScriptingExtensions { public static string RegisterStartupScript(this ViewContext context, string key, string script) { var scriptMarkup = string.Format("$(document).ready(function(){{ {0} }});", script); return RegisterScript(context, key, scriptMarkup); } public static string RegisterScript(this ViewContext context, string key, string script) { var markup = string.Empty; var itemKey = string.Format("Script_{0}", key); var contextItems = context.HttpContext.Items; if (contextItems[itemKey] == null) { markup = string.Format("", script); contextItems[itemKey] = true; } return markup; } public static string RegisterScriptInclude(this ViewContext context, string scriptName) { var url = VirtualPathUtility.ToAbsolute(string.Format("/scripts/{0}.js", scriptName)); return RegisterScriptInclude(context, scriptName, url); } public static string RegisterScriptInclude(this ViewContext context, string key, string url) { var markup = string.Empty; var itemKey = string.Format("Script_{0}", key.ToLowerInvariant()); var contextItems = context.HttpContext.Items; if (contextItems[itemKey] == null) { markup = string.Format("", url); contextItems[itemKey] = true; } return markup; } // Duplicate all of these extension methods on HtmlHelper as well (since every page has one) #region HtmlHelper Duplicates public static string RegisterStartupScript(this HtmlHelper html, string key, string script) { return html.ViewContext.RegisterStartupScript(key, script); } public static string RegisterScript(this HtmlHelper html, string key, string script) { return html.ViewContext.RegisterScript(key, script); } public static string RegisterScriptInclude(this HtmlHelper html, string name) { return html.ViewContext.RegisterScriptInclude(name); } public static string RegisterScriptInclude(this HtmlHelper html, string key, string url) { return html.ViewContext.RegisterScriptInclude(key, url); } #endregion } }