public static void RegisterMvcServices(this IWebBuilder webBuilder) { webBuilder.RegisterServices(services => { services.AddMvc(); }); }
private static async Task RegisterPages(IWebBuilder webBuilder, string rootDirectory) { var pages = await LoadPages(rootDirectory); var root = new MenuItem { Path = "/", Title = "Home" }; // Register the root node so we can get it later. webBuilder.RegisterServices(services => services.AddSingleton(root)); void Walk(PageTreeItem <PageNode> pageItem, MenuItem menuItem) { if (pageItem.Data == null) { // There isn't a markdown file associated with this level. // Maybe missing index.md? webBuilder.RegisterMvc(pageItem.Path, new { controller = "Page", action = "EmptyParent", menu = menuItem }, new PageOptions(null, menuItem.Title)); } else { webBuilder.RegisterMvc(pageItem.Path, new { controller = "Page", action = "Page", page = pageItem.Data, menu = menuItem }, new PageOptions(pageItem.FilePath, menuItem.Title)); } foreach (var child in pageItem.Children) { var childMenuItem = new MenuItem(); childMenuItem.Title = child.Data.Title; childMenuItem.Path = child.Path; childMenuItem.Parent = menuItem; childMenuItem.Order = child.Data.Order; childMenuItem.Level = menuItem.Level + 1; menuItem.Children.Add(childMenuItem); Walk(child, childMenuItem); } } Walk(pages, root); }
private static async Task RegisterConfig(IWebBuilder webBuilder, string rootDirectory) { var configFile = Path.Combine(rootDirectory, "config.yml"); string configContents; try { configContents = await File.ReadAllTextAsync(configFile); } catch (Exception ex) { throw new Exception($"Problem loading file {configFile}", ex); } var parsed = Parser.Parse($"---\n{configContents}\n---"); var config = new ProjectConfig { Name = parsed.Yaml.name, Logo = parsed.Yaml.logo, EditUrl = parsed.Yaml.edit_url, Footer = parsed.Yaml.footer, GoogleTrackingId = parsed.Yaml.google_tracking_id }; var moreLinks = new List <MoreLink>(); JArray links = parsed.Yaml.more_links; if (links != null) { foreach (dynamic link in links) { moreLinks.Add(new MoreLink { Text = link.text, Url = link.url, Icon = link.icon }); } } webBuilder.RegisterServices(services => { services.AddSingleton(moreLinks); services.AddSingleton(config); }); }
public static void RegisterMvcServices(this IWebBuilder webBuilder, params Assembly[] additionalParts) { var callingAssembly = Assembly.GetCallingAssembly(); webBuilder.RegisterServices(services => { var parts = additionalParts.ToList(); if (!parts.Contains(callingAssembly)) { parts.Add(callingAssembly); } var b = services.AddMvc(); foreach (var part in parts) { b.AddApplicationPart(part); } b.AddRazorRuntimeCompilation(); }); }