Skip to content

Instantly share code, notes, and snippets.

@brooklynDev
Created February 15, 2012 20:40
Show Gist options
  • Save brooklynDev/1838853 to your computer and use it in GitHub Desktop.
Save brooklynDev/1838853 to your computer and use it in GitHub Desktop.
public static class HtmlHelperExtensions
{
public static IHtmlString IncludeNGon(this HtmlHelper helper, string @namespace = "ngon")
{
var viewData = helper.ViewContext.ViewData;
if (viewData == null)
{
return MvcHtmlString.Empty;
}
var ngon = viewData["NGon"] as ExpandoObject;
if (ngon == null)
{
throw new InvalidOperationException("Cannot find NGon in ViewBag. Did you remember to add the global NGonActionFilterAttribute?");
}
var tag = new TagBuilder("script");
tag.Attributes.Add(new KeyValuePair<string, string>("type", "text/javascript"));
var builder = new StringBuilder();
builder.AppendFormat("window.{0}={{}};", @namespace);
var serializer = new JavaScriptSerializer();
foreach (var prop in ngon)
{
builder.AppendFormat("{0}.{1}={2};", @namespace, prop.Key, helper.Raw(serializer.Serialize(prop.Value)));
}
tag.InnerHtml = builder.ToString();
return new HtmlString(tag.ToString());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment