1
0
mirror of https://git.teknik.io/Teknikode/Teknik.git synced 2023-08-02 14:16:22 +02:00

Fixed URL Routing generation for Links.

Added Namespace routing extension.
This commit is contained in:
Uncled1023 2015-11-23 11:17:57 -08:00
parent aa754450c3
commit d97e89d9d3
15 changed files with 159 additions and 38 deletions

View File

@ -18,6 +18,30 @@ namespace Teknik
return route;
}
public static SubdomainRoute MapSubdomainRoute(this RouteCollection routes, string name, string subDomain, string url, object defaults, object constraints)
{
SubdomainRoute route = new SubdomainRoute(
subDomain,
url,
new RouteValueDictionary(defaults),
new RouteValueDictionary(constraints),
new MvcRouteHandler());
routes.Add(name, route);
return route;
}
public static SubdomainRoute MapSubdomainRoute(this RouteCollection routes, string name, string subDomain, string url, object defaults, string[] namespaces)
{
SubdomainRoute route = new SubdomainRoute(
subDomain,
url,
new RouteValueDictionary(defaults),
new RouteValueDictionary(namespaces),
new MvcRouteHandler());
routes.Add(name, route);
return route;
}
public static SubdomainRoute MapSubdomainRoute(this AreaRegistrationContext context, string name, string subDomain, string url, object defaults)
{
SubdomainRoute route = new SubdomainRoute(
@ -46,15 +70,17 @@ namespace Teknik
return route;
}
public static SubdomainRoute MapSubdomainRoute(this RouteCollection routes, string name, string subDomain, string url, object defaults, object constraints)
public static SubdomainRoute MapSubdomainRoute(this AreaRegistrationContext context, string name, string subDomain, string url, object defaults, string[] namespaces)
{
SubdomainRoute route = new SubdomainRoute(
subDomain,
url,
new RouteValueDictionary(defaults),
new RouteValueDictionary(constraints),
new RouteValueDictionary(new {}),
new RouteValueDictionary(new { Area = context.AreaName, Namespaces = namespaces }),
new MvcRouteHandler());
routes.Add(name, route);
context.Routes.Add(name, route);
return route;
}
}

View File

@ -18,13 +18,15 @@ namespace Teknik.Areas.About
"About_dev", // Route name
"dev",
"About/{controller}/{action}", // URL with parameters
new { area = "About", controller = "About", action = "Index" } // Parameter defaults
new { area = "About", controller = "About", action = "Index" }, // Parameter defaults
new[] { typeof(Controllers.AboutController).Namespace }
);
context.MapSubdomainRoute(
"About_default", // Route name
"about",
"{controller}/{action}", // URL with parameters
new { area = this.AreaName, controller = "About", action = "Index", username = UrlParameter.Optional, page = UrlParameter.Optional } // Parameter defaults
new { area = this.AreaName, controller = "About", action = "Index", username = UrlParameter.Optional, page = UrlParameter.Optional }, // Parameter defaults
new[] { typeof(Controllers.AboutController).Namespace }
);
}
}

View File

@ -16,7 +16,7 @@ namespace Teknik.Areas.About.Controllers
ViewBag.Title = Config.Title + " - About";
ViewBag.Message = "Your application description page.";
return View(Config);
return View();
}
}
}

View File

@ -45,7 +45,7 @@
<p>
<div class="input-group col-sm-6 col-sm-offset-3">
<span class="input-group-addon" id="basic-addon1">Bitcoin Address</span>
<input type="text" class="form-control" name="bitcoin_address" value="@Model.BitcoinAddress" readonly>
<input type="text" class="form-control" name="bitcoin_address" value="@ViewBag.Config.BitcoinAddress" readonly>
</div>
<br />
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MBG93VKQ343P4">

View File

@ -19,19 +19,22 @@ namespace Teknik.Areas.Home
"Home_dev", // Route name
"dev",
"Home/{controller}/{action}", // URL with parameters
new { area = "Home", controller = "Home", action = "Index" } // Parameter defaults
new { area = "Home", controller = "Home", action = "Index" }, // Parameter defaults
new[] { typeof(Controllers.HomeController).Namespace }
);
context.MapSubdomainRoute(
"Home_subdomain", // Route name
"www",
"{controller}/{action}", // URL with parameters
new { area = this.AreaName, controller = "Home", action = "Index" } // Parameter defaults
new { area = this.AreaName, controller = "Home", action = "Index" }, // Parameter defaults
new[] { typeof(Controllers.HomeController).Namespace }
);
context.MapSubdomainRoute(
"Home_default", // Route name
null,
"{controller}/{action}", // URL with parameters
new { area = this.AreaName, controller = "Home", action = "Index" } // Parameter defaults
new { area = this.AreaName, controller = "Home", action = "Index" }, // Parameter defaults
new[] { typeof(Controllers.HomeController).Namespace }
);
//context.MapRoute(
// "Home_default",

View File

@ -15,7 +15,7 @@
<br />
<div class="container">
<div class="row">
<a href="@Url.Action("Index", "Upload")">
<a href="@Url.Action("Index", "Upload", new { area = "Upload"})">
<div class="col-md-3 text-center">
<div class="thumbnail">
<br />
@ -26,7 +26,7 @@
</div>
</div>
</a>
<a href="@Url.Action("Index", "Paste")">
<a href="@Url.Action("Index", "Paste", new { area = "Paste"})">
<div class="col-md-3 text-center">
<div class="thumbnail">
<br />
@ -37,7 +37,7 @@
</div>
</div>
</a>
<a href="@Url.Action("Index", "Podcast")">
<a href="@Url.Action("Index", "Podcast", new { area = "Podcast"})">
<div class="col-md-3 text-center">
<div class="thumbnail">
<br />
@ -48,7 +48,7 @@
</div>
</div>
</a>
<a href="@Url.Action("Index", "Help")/#Mumble">
<a href="@Url.Action("Index", "Help", new { area = "Help"})/#Mumble">
<div class="col-md-3 text-center">
<div class="thumbnail">
<br />
@ -68,7 +68,7 @@
</div>
<br/>
<div class="row">
<a href="@Url.Action("Index", "Help")/#Mail">
<a href="@Url.Action("Index", "Help", new { area = "Help"})/#Mail">
<div class="col-md-3 text-center">
<div class="thumbnail">
<br/>
@ -79,7 +79,7 @@
</div>
</div>
</a>
<a href="@Url.Action("Index", "Git")">
<a href="@Url.Action("Index", "Git", new { area = "Git"})">
<div class="col-md-3 text-center">
<div class="thumbnail">
<br/>
@ -90,7 +90,7 @@
</div>
</div>
</a>
<a href="@Url.Action("Index", "Blog")">
<a href="@Url.Action("Index", "Blog", new { area = "Blog"})">
<div class="col-md-3 text-center">
<div class="thumbnail">
<br/>
@ -101,7 +101,7 @@
</div>
</div>
</a>
<a href="@Url.Action("Index", "Help")/#IRC">
<a href="@Url.Action("Index", "Help", new { area = "Help"})/#IRC">
<div class="col-md-3 text-center">
<div class="thumbnail">
<br/>

View File

@ -58,8 +58,12 @@ namespace Teknik
public static Config Load()
{
string configContents = File.ReadAllText(HttpContext.Current.Server.MapPath("~/App_Data/Config.json"));
Config config = Config.Deserialize(configContents);
Config config = new Config();
if (File.Exists(HttpContext.Current.Server.MapPath("~/App_Data/Config.json")))
{
string configContents = File.ReadAllText(HttpContext.Current.Server.MapPath("~/App_Data/Config.json"));
config = Config.Deserialize(configContents);
}
return config;
}
}

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="358.723px" height="72.131px" viewBox="0 0 358.723 72.131" enable-background="new 0 0 358.723 72.131"
xml:space="preserve">
<path fill="#231F20" d="M6.386,37.688c0-3.665-2.722-6.7-6.386-7.537V22.3h6.386V10.784h11.62V22.3h18.217v10.363h-22.09v3.561
c2.513,0.732,3.873,2.93,3.873,5.863v19.574h18.217v10.47H11.515c-2.616,0-5.129-2.198-5.129-5.235V37.688z"/>
<path fill="#231F20" d="M130.21,61.661L114.612,45.54l12.04-12.877h7.118V22.3h-8.689c-2.512,0-4.083,0.942-5.129,1.989
l-15.39,16.854h-2.407V5.13c0-2.512-2.199-5.13-5.13-5.13H84.147v10.47h6.386v51.191h-5.895h-0.596H50.317V49.729h4.188
c0.523,2.721,2.513,3.663,5.024,3.663h20.31c3.036,0,5.235-2.198,5.235-5.235V27.638c0-3.035-2.199-5.338-5.235-5.338H44.036
c-2.722,0-5.34,2.303-5.34,5.338v39.258c0,3.037,2.618,5.235,5.34,5.235h40.007h1.03h11.951c2.931,0,5.13-2.198,5.13-5.235V50.984
h3.035l17.798,19.263c1.569,1.465,3.036,1.884,5.024,1.884h5.758v-10.47H130.21z M50.317,32.663h23.135v10.365H50.317V32.663z"/>
<rect x="198.291" y="0.143" fill="#231F20" width="11.621" height="12.772"/>
<path fill="#231F20" d="M206.451,61.661v-3.453c2.617-0.629,3.873-2.722,3.873-4.816V27.638c0-3.035-2.305-5.338-5.131-5.338h-12.98
v10.363h6.49v24.184c0,3.559-2.512,3.635-6.49,4.682v10.603h24.602h12.982c2.932,0,5.129-2.198,5.129-5.235V50.984h3.035
l17.799,19.263c1.57,1.465,3.035,1.884,5.023,1.884h9.004v-10.47h-6.805l-15.6-16.121l12.041-12.877h7.119V22.3h-8.691
c-2.512,0-4.082,0.942-5.129,1.989l-15.389,16.854h-2.408V5.13c0-2.512-2.197-5.13-5.129-5.13H216.92v10.47h6.385v51.191"/>
<path fill="#231F20" d="M272.262,61.661h11.453v10.47h-11.453V61.661z"/>
<path fill="#231F20" d="M286.188,61.661c3.92-1.049,6.396-1.279,6.396-4.846V32.582h-6.396V22.196h12.793
c2.787,0,5.057,2.308,5.057,5.35v25.806c0,2.099-1.238,4.197-3.818,4.826v3.462h10.215v10.49h-24.246V61.661z"/>
<rect x="292.584" fill="#231F20" width="11.453" height="12.798"/>
<path fill="#231F20" d="M312.91,27.546c0-3.042,2.477-5.35,5.365-5.35h35.186c2.992,0,5.262,2.308,5.262,5.35v39.339
c0,3.042-2.27,5.245-5.262,5.245h-35.186c-2.889,0-5.365-2.203-5.365-5.245V27.546z M347.27,61.641V32.582h-22.906v29.059H347.27z"
/>
<path fill="#231F20" d="M183.248,61.661V27.638c0-3.035-2.721-5.338-5.547-5.338h-25.754l-4.71,7.747h-0.209v-2.514
c0-2.093-1.676-5.233-5.444-5.233l-5.34-0.135v10.498v21.59v2.594v15.284h18.217v-10.47h-10.469v-3.453
c2.617-0.629,3.873-2.722,3.873-4.816V40.2c0-4.396,3.455-7.537,7.852-7.537h15.912v34.232c0,3.037,2.408,5.235,5.235,5.235h12.876
v-10.47H183.248z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="263.292px" height="72.13px" viewBox="0 0 263.292 72.13" enable-background="new 0 0 263.292 72.13" xml:space="preserve">
<path d="M6.386,37.689c0-3.666-2.722-6.7-6.386-7.538V22.3h6.386V10.784h11.62V22.3h18.217v10.363h-22.09v3.561
c2.513,0.732,3.873,2.93,3.873,5.863v19.574h18.217V72.13H11.515c-2.616,0-5.129-2.197-5.129-5.234V37.689z"/>
<path d="M130.21,61.662l-15.599-16.121l12.04-12.877h7.118V22.3h-8.689c-2.512,0-4.083,0.942-5.129,1.989l-15.39,16.854h-2.407V5.13
c0-2.512-2.199-5.13-5.13-5.13H84.147v10.47h6.386v51.192h-5.895h-0.596H50.317V49.728h4.188c0.523,2.721,2.513,3.664,5.024,3.664
h20.31c3.036,0,5.235-2.199,5.235-5.236V27.638c0-3.035-2.199-5.338-5.235-5.338H44.036c-2.722,0-5.34,2.303-5.34,5.338v39.258
c0,3.037,2.618,5.234,5.34,5.234h40.007h1.03h11.951c2.931,0,5.13-2.197,5.13-5.234V50.984h3.035l17.798,19.264
c1.569,1.465,3.036,1.883,5.024,1.883h5.758V61.662H130.21z M50.317,32.663h23.135v10.366H50.317V32.663z"/>
<polygon points="203.416,0 196.745,0 191.794,0 191.794,12.772 203.416,12.772 "/>
<path d="M199.955,61.662v-3.453c2.617-0.629,3.873-2.723,3.873-4.816V27.638c0-3.035-2.304-5.338-5.13-5.338h-12.98v10.363h6.489
v24.184c0,3.559-2.512,3.635-6.489,4.682V72.13h24.602H223.3c2.932,0,5.13-2.197,5.13-5.234V50.984h3.035l17.798,19.264
c1.57,1.465,3.036,1.883,5.024,1.883h9.004V61.662h-6.805l-15.6-16.121l12.04-12.877h7.119V22.3h-8.69
c-2.512,0-4.082,0.942-5.129,1.989l-15.39,16.854h-2.407V5.13c0-2.512-2.198-5.13-5.13-5.13h-12.877v10.47h6.386v51.192"/>
<path d="M183.249,61.662V27.638c0-3.035-2.721-5.338-5.548-5.338h-25.754l-4.71,7.747h-0.209v-2.514
c0-2.093-1.676-5.233-5.444-5.233l-5.34-0.135v10.498v21.59v2.594V72.13h18.217V61.662h-10.469v-3.453
c2.617-0.629,3.873-2.723,3.873-4.816V40.201c0-4.396,3.455-7.538,7.852-7.538h15.912v34.233c0,1.289,0.435,2.428,1.151,3.311
c0.97,1.197,2.458,1.924,4.084,1.924h6.381L183.249,61.662L183.249,61.662z"/>
<rect x="171.628" y="54.419" width="11.62" height="6.25"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="358.722px" height="72.131px" viewBox="0 0 358.722 72.131" enable-background="new 0 0 358.722 72.131"
xml:space="preserve">
<path fill="#418BCA" d="M6.386,37.688c0-3.665-2.722-6.7-6.386-7.537V22.3h6.386V10.784h11.62V22.3h18.217v10.363h-22.09v3.561
c2.513,0.732,3.873,2.93,3.873,5.863v19.574h18.217v10.47H11.515c-2.616,0-5.129-2.198-5.129-5.235V37.688z"/>
<path fill="#418BCA" d="M130.21,61.661L114.612,45.54l12.04-12.877h7.118V22.3h-8.689c-2.512,0-4.083,0.942-5.129,1.989
l-15.39,16.854h-2.407V5.13c0-2.512-2.199-5.13-5.13-5.13H84.147v10.47h6.386v51.191h-5.895h-0.596H50.317V49.729h4.188
c0.523,2.721,2.513,3.663,5.024,3.663h20.31c3.036,0,5.235-2.198,5.235-5.235V27.638c0-3.035-2.199-5.338-5.235-5.338H44.036
c-2.722,0-5.34,2.303-5.34,5.338v39.258c0,3.037,2.618,5.235,5.34,5.235h40.007h1.03h11.951c2.931,0,5.13-2.198,5.13-5.235V50.984
h3.035l17.798,19.263c1.569,1.465,3.036,1.884,5.024,1.884h5.758v-10.47H130.21z M50.317,32.663h23.135v10.365H50.317V32.663z"/>
<rect x="198.291" y="0.143" fill="#418BCA" width="11.621" height="12.772"/>
<path fill="#418BCA" d="M206.451,61.661v-3.453c2.617-0.629,3.873-2.722,3.873-4.816V27.638c0-3.035-2.304-5.338-5.13-5.338h-12.98
v10.363h6.489v24.184c0,3.559-2.512,3.635-6.489,4.682v10.603h24.602h12.981c2.932,0,5.13-2.198,5.13-5.235V50.984h3.035
l17.798,19.263c1.57,1.465,3.036,1.884,5.024,1.884h9.004v-10.47h-6.805l-15.6-16.121l12.04-12.877h7.119V22.3h-8.69
c-2.512,0-4.082,0.942-5.129,1.989l-15.39,16.854h-2.407V5.13c0-2.512-2.198-5.13-5.13-5.13h-12.877v10.47h6.386v51.191"/>
<path fill="#418BCA" d="M272.261,61.661h11.453v10.47h-11.453V61.661z"/>
<path fill="#418BCA" d="M286.187,61.661c3.92-1.049,6.396-1.279,6.396-4.846V32.582h-6.396V22.196h12.794
c2.786,0,5.056,2.308,5.056,5.35v25.806c0,2.099-1.238,4.197-3.817,4.826v3.462h10.215v10.49h-24.247V61.661z"/>
<rect x="292.583" fill="#418BCA" width="11.453" height="12.798"/>
<path fill="#418BCA" d="M312.911,27.546c0-3.042,2.477-5.35,5.365-5.35h35.185c2.992,0,5.262,2.308,5.262,5.35v39.339
c0,3.042-2.27,5.245-5.262,5.245h-35.185c-2.889,0-5.365-2.203-5.365-5.245V27.546z M347.269,61.641V32.582h-22.905v29.059H347.269z
"/>
<path fill="#418BCA" d="M183.249,61.661V27.638c0-3.035-2.721-5.338-5.548-5.338h-25.754l-4.71,7.747h-0.209v-2.514
c0-2.093-1.676-5.233-5.444-5.233l-5.34-0.135v10.498v21.59v2.594v15.284h18.217v-10.47h-10.469v-3.453
c2.617-0.629,3.873-2.722,3.873-4.816V40.2c0-4.396,3.455-7.537,7.852-7.537h15.912v34.232c0,3.037,2.408,5.235,5.235,5.235h12.876
v-10.47H183.249z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -169,6 +169,9 @@
<Content Include="Content\CSS\font-awesome.css" />
<Content Include="Content\CSS\font-awesome.min.css" />
<Content Include="Content\Images\favicon.ico" />
<Content Include="Content\Images\logo-black-io.svg" />
<Content Include="Content\Images\logo-black.svg" />
<Content Include="Content\Images\logo-blue-io.svg" />
<Content Include="Content\Images\logo-blue.svg" />
<Content Include="Content\fonts\fontawesome-webfont.svg" />
<Content Include="Content\fonts\glyphicons-halflings-regular.svg" />

View File

@ -1,6 +1,6 @@
@model Teknik.ViewModels.LoginViewModel
<form role="form" id="loginForm" action="@Url.Action("Login", "Profile")" method="post" accept-charset="UTF-8">
<form role="form" id="loginForm" action="@Url.Action("Login", "Profile", new { area = "Home" })" method="post" accept-charset="UTF-8">
@Html.ValidationSummary(true, "Login failed. Check your login details.")
<div class="form-group">
<input type="text" class="form-control" id="Username" value="" placeholder="Username" name="Username" data-val-required="The Username field is required." data-val="true" />

View File

@ -1,6 +1,6 @@
@model Teknik.ViewModels.RegisterViewModel
<form role="form" id="registrationForm" action="@Url.Action("Register", "Profile")" method="post" accept-charset="UTF-8">
<form role="form" id="registrationForm" action="@Url.Action("Register", "Profile", new { area = "Profile" })" method="post" accept-charset="UTF-8">
@Html.ValidationSummary(true, "Registration failed. Check your registration details.")
<div class="form-group">
<input type="text" class="form-control" id="Username" value="" placeholder="Username" name="Username" data-val-required="The Username field is required." data-val="true"/>

View File

@ -7,19 +7,19 @@
<a href="#" id="user_menu" class="dropdown-toggle" data-toggle="dropdown">@User.Identity.Name <strong class="caret"></strong></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="user_menu">
<li>
<a href="@Url.Action("Index", "Profile")/@User.Identity.Name">Profile</a>
<a href="@Url.Action("Index", "Profile", new { area = "Profile" })/@User.Identity.Name">Profile</a>
</li>
<li>
<a href="@Url.Action("Index", "Blog")/@User.Identity.Name">Blog</a>
<a href="@Url.Action("Index", "Blog", new { area = "Blog" })/@User.Identity.Name">Blog</a>
</li>
if (User.Identity.Group == Groups.Founder)
{
<li>
<a href="@Url.Action("Index", "Admin")">Administration</a>
<a href="@Url.Action("Index", "Admin", new { area = "Admin" })">Administration</a>
</li>
}
<li>
@Html.ActionLink("Sign Out", "Logout", "Profile")
@Html.ActionLink("Sign Out", "Logout", "Profile", new { area = "Profile" })
</li>
</ul>
</li>

View File

@ -7,50 +7,50 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="@Url.Action("Index", "Home")"><img src="/Content/Images/logo-blue.svg" height="20" alt="Teknik"></a>
<a class="navbar-brand" href="@Url.Action("Index", "Home", new { area = "Home" })"><img src="/Content/Images/logo-black.svg" height="20" alt="Teknik"></a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="@Url.Action("Index", "Home")">Home</a></li>
<li><a href="@Url.Action("About", "Home")">About</a></li>
<li><a href="@Url.Action("Index", "Home", new { area = "Home" })">Home</a></li>
<li><a href="@Url.Action("Index", "About", new { area = "About" })">About</a></li>
<li class="divider-vertical"></li>
<li class="dropdown">
<a href="#" id="services_menu" class="dropdown-toggle" data-toggle="dropdown">Services <strong class="caret"></strong></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="services_menu">
<li>
<a href="@Url.Action("Index", "Blog")">Blog</a>
<a href="@Url.Action("Index", "Blog", new { area = "Blog" })">Blog</a>
</li>
<li>
<a href="@Url.Action("Index", "Podcast")">Podcast</a>
<a href="@Url.Action("Index", "Podcast", new { area = "Podcast" })">Podcast</a>
</li>
<li class="divider"></li>
<li>
<a href="@Url.Action("Index", "Upload")">Upload</a>
<a href="@Url.Action("Index", "Upload", new { area = "Upload" })">Upload</a>
</li>
<li>
<a href="@Url.Action("Index", "Paste")">Paste</a>
<a href="@Url.Action("Index", "Paste", new { area = "Paste" })">Paste</a>
</li>
<li>
<a href="@Url.Action("Index", "Git")">Git</a>
<a href="@Url.Action("Index", "Git", new { area = "Git" })">Git</a>
</li>
<li>
<a href="@Url.Action("Index", "Mail")" target="_blank">Mail</a>
<a href="@Url.Action("Index", "Mail", new { area = "Mail" })" target="_blank">Mail</a>
</li>
<li>
<a href="mumble://mumble.@(ViewBag.Config.Host):64738/?version=1.2.5" target="_blank">Mumble</a>
</li>
<li class="divider"></li>
<li>
<a href="@Url.Action("Index", "Ricehalla")">Ricehalla</a>
<a href="@Url.Action("Index", "Ricehalla", new { area = "Ricehalla" })">Ricehalla</a>
</li>
</ul>
</li>
<li>
<a href="@Url.Action("Index", "Contact")">Contact</a>
<a href="@Url.Action("Index", "Contact", new { area = "Contact" })">Contact</a>
</li>
<li>
<a href="@Url.Action("Index", "Help")">Help</a>
<a href="@Url.Action("Index", "Help", new { area = "Help" })">Help</a>
</li>
</ul>
@Html.Partial("_LoginPartial")