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
}
}